library(here)
here() starts at C:/Users/plancha/exoplanets
library(tidyverse)
── Attaching core tidyverse packages ────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     ── Conflicts ──────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(conflicted)
# library(easystats)

exoplanets <- read_csv(here("data", "exoplanet_catalog_080325.csv"))
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
  dat <- vroom(...)
  problems(dat)Rows: 7418 Columns: 98── Column specification ──────────────────────────────────────────────────────
Delimiter: ","
chr  (12): name, planet_status, publication, detection_type, mass_measurem...
dbl  (83): mass, mass_error_min, mass_error_max, mass_sini, mass_sini_erro...
lgl   (2): hot_point_lon, star_magnetic_field
date  (1): updated
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
exoplanets
library(skimr)
skim(exoplanets)
Warning: There was 1 warning in `dplyr::summarize()`.
ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
  mangled_skimmers$funs)`.
ℹ In group 0: .
Caused by warning:
! There was 1 warning in `dplyr::summarize()`.
ℹ In argument: `dplyr::across(tidyselect::any_of(variable_names),
  mangled_skimmers$funs)`.
Caused by warning in `inline_hist()`:
! Variable contains Inf or -Inf value(s) that were converted to NA.
── Data Summary ────────────────────────
                           Values    
Name                       exoplanets
Number of rows             7418      
Number of columns          98        
_______________________              
Column type frequency:               
  character                12        
  Date                     1         
  logical                  2         
  numeric                  83        
________________________             
Group variables            None      
library(tidymodels)
── Attaching packages ──────────────────────────────────── tidymodels 1.3.0 ──
✔ broom        1.0.7     ✔ rsample      1.2.1
✔ dials        1.4.0     ✔ tune         1.3.0
✔ infer        1.0.7     ✔ workflows    1.2.0
✔ modeldata    1.4.0     ✔ workflowsets 1.1.0
✔ parsnip      1.3.1     ✔ yardstick    1.3.2
✔ recipes      1.1.1     
glimpse(exoplanets)
Rows: 7,418
Columns: 98
$ name                       <chr> "109 Psc b", "112 Psc b", "112 Psc c", "1…
$ planet_status              <chr> "Confirmed", "Confirmed", "Confirmed", "C…
$ mass                       <dbl> 5.743, NA, 9.866, NA, NA, NA, 8.500, 7.10…
$ mass_error_min             <dbl> 0.28900, 0.00500, 1.78100, 1.53491, 1.100…
$ mass_error_max             <dbl> 1.01100, 0.00400, 3.19000, 1.53491, 1.100…
$ mass_sini                  <dbl> 6.3830, 0.0330, NA, 16.1284, 11.0873, 4.6…
$ mass_sini_error_min        <dbl> 0.07800, 0.00500, NA, 1.53491, 1.10000, 0…
$ mass_sini_error_max        <dbl> 0.07800, 0.00400, NA, 1.53491, 1.10000, 0…
$ radius                     <dbl> 1.152, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ radius_error_min           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ radius_error_max           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ orbital_period             <dbl> 1075.4000, 4.4000, 36336.7000, 326.0300, …
$ orbital_period_error_min   <dbl> 0.7000, 0.0004, 6039.4000, 0.3200, 3.2500…
$ orbital_period_error_max   <dbl> 0.8000, 0.0002, 9726.0000, 0.3200, 3.2500…
$ semi_major_axis            <dbl> 2.051, 0.054, 22.210, 1.290, 1.540, 0.830…
$ semi_major_axis_error_min  <dbl> 0.087, 0.002, 2.766, 0.050, 0.070, NA, 0.…
$ semi_major_axis_error_max  <dbl> 0.079, 0.002, 3.866, 0.050, 0.070, NA, 0.…
$ eccentricity               <dbl> 0.104, 0.376, 0.174, 0.231, 0.080, 0.000,…
$ eccentricity_error_min     <dbl> 0.008, 0.254, 0.154, 0.005, 0.030, NA, 0.…
$ eccentricity_error_max     <dbl> 0.009, 0.110, 0.110, 0.005, 0.030, NA, 0.…
$ inclination                <dbl> 86.116, NA, 47.738, NA, NA, NA, 35.700, 8…
$ inclination_error_min      <dbl> 20.530, NA, 11.804, NA, NA, NA, 3.200, 14…
$ inclination_error_max      <dbl> 19.957, NA, 12.651, NA, NA, NA, 3.200, 14…
$ angular_distance           <dbl> 0.066339, NA, NA, 0.011664, 0.012887, 0.0…
$ discovered                 <dbl> 2000, 2022, 2022, 2007, 2009, 2008, 2002,…
$ updated                    <date> 2024-06-14, 2024-06-14, 2024-06-14, 2024…
$ omega                      <dbl> 112.816, 279.492, 79.772, 94.800, 117.630…
$ omega_error_min            <dbl> 5.448, 67.524, 31.067, 1.500, 21.060, NA,…
$ omega_error_max            <dbl> 5.254, 30.206, 15.493, 1.500, 21.060, NA,…
$ tperi                      <dbl> 2451492, NA, NA, 2452900, 2452861, 245286…
$ tperi_error_min            <dbl> 17.00, NA, NA, 1.60, 2.06, 1.50, 5.00, 33…
$ tperi_error_max            <dbl> 17.00, NA, NA, 1.60, 2.06, 1.50, 5.00, 33…
$ tconj                      <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tconj_error_min            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tconj_error_max            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr                   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_error_min         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_error_max         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_sec               <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_sec_error_min     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_sec_error_max     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ lambda_angle               <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ lambda_angle_error_min     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ lambda_angle_error_max     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ impact_parameter           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ impact_parameter_error_min <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ impact_parameter_error_max <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_vr                   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_vr_error_min         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_vr_error_max         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ k                          <dbl> 114.583, 4.157, 42.503, 302.800, 189.700,…
$ k_error_min                <dbl> 1.196, NA, 0.586, 2.600, 7.150, 1.300, 0.…
$ k_error_max                <dbl> 1.067, NA, 1.868, 2.600, 7.150, 1.300, 0.…
$ temp_calculated            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ temp_calculated_error_min  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ temp_calculated_error_max  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ temp_measured              <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1…
$ hot_point_lon              <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ geometric_albedo           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ geometric_albedo_error_min <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ geometric_albedo_error_max <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ log_g                      <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4…
$ publication                <chr> "Published in a refereed paper", "Publish…
$ detection_type             <chr> "Radial Velocity, Astrometry", "Radial Ve…
$ mass_measurement_type      <chr> "Radial Velocity", "Radial Velocity", "As…
$ radius_measurement_type    <chr> "Theoretical", NA, NA, NA, NA, NA, NA, NA…
$ alternate_names            <chr> "HD 10697 b", "HD 12235 b", "HD 12235 c",…
$ molecules                  <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "…
$ star_name                  <chr> "109 Psc", "112 Psc", "112 Psc", "11 Com …
$ ra                         <dbl> 26.23260, 30.03816, 30.03816, 185.17917, …
$ dec                        <dbl> 20.0831500, 3.0970140, 3.0970140, 17.7927…
$ mag_v                      <dbl> 6.290, 5.880, 5.880, 4.740, 5.020, 5.220,…
$ mag_i                      <dbl> NA, NA, NA, NA, NA, 4.100, NA, NA, NA, NA…
$ mag_j                      <dbl> NA, 5.204, 5.204, NA, NA, 3.020, NA, NA, …
$ mag_h                      <dbl> NA, 4.630, 4.630, NA, NA, 2.610, NA, NA, …
$ mag_k                      <dbl> NA, 4.494, 4.494, NA, NA, 2.330, NA, NA, …
$ star_distance              <dbl> 32.5600, 31.7627, 31.7627, 110.6000, 119.…
$ star_distance_error_min    <dbl> 0.88000, 0.10695, 0.10695, 10.50000, 6.90…
$ star_distance_error_max    <dbl> 0.88000, 0.10695, 0.10695, 10.50000, 6.90…
$ star_metallicity           <dbl> 0.100, 0.310, 0.310, -0.350, 0.040, -0.24…
$ star_metallicity_error_min <dbl> 0.060, 0.100, 0.100, 0.090, 0.040, NA, 0.…
$ star_metallicity_error_max <dbl> 0.060, 0.100, 0.100, 0.090, 0.040, NA, 0.…
$ star_mass                  <dbl> 1.13, 1.10, 1.10, 2.70, 1.80, 2.20, 0.90,…
$ star_mass_error_min        <dbl> 0.030, 0.133, 0.133, 0.300, 0.250, 0.200,…
$ star_mass_error_max        <dbl> 0.030, 0.133, 0.133, 0.300, 0.250, 0.200,…
$ star_radius                <dbl> 1.790, 1.801, 1.801, 19.000, 24.080, 11.0…
$ star_radius_error_min      <dbl> 0.1700, 0.0725, 0.0725, 2.0000, 1.8400, 1…
$ star_radius_error_max      <dbl> 0.1700, 0.0725, 0.0725, 2.0000, 1.8400, 1…
$ star_sp_type               <chr> "G5 IV", "G0IV", "G0IV", "G8III", "K4III"…
$ star_age                   <dbl> 6.900, NA, NA, NA, 1.560, NA, 5.100, 5.10…
$ star_age_error_min         <dbl> 0.600, NA, NA, NA, 0.540, NA, NA, NA, 1.8…
$ star_age_error_max         <dbl> 0.600, NA, NA, NA, 0.540, NA, NA, NA, 1.8…
$ star_teff                  <dbl> 5600.00, 5986.00, 5986.00, 4742.00, 4340.…
$ star_teff_error_min        <dbl> 80.000, 105.437, 105.437, 100.000, 70.000…
$ star_teff_error_max        <dbl> 80.000, 105.437, 105.437, 100.000, 70.000…
$ star_detected_disc         <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ star_magnetic_field        <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ star_alternate_names       <chr> "HD 10697", "HD 12235", "HD 12235", "HD 1…
library(naniar)
gg_miss_var(exoplanets)

library(visdat)
vis_dat(exoplanets)

names(exoplanets)
 [1] "name"                       "planet_status"             
 [3] "mass"                       "mass_error_min"            
 [5] "mass_error_max"             "mass_sini"                 
 [7] "mass_sini_error_min"        "mass_sini_error_max"       
 [9] "radius"                     "radius_error_min"          
[11] "radius_error_max"           "orbital_period"            
[13] "orbital_period_error_min"   "orbital_period_error_max"  
[15] "semi_major_axis"            "semi_major_axis_error_min" 
[17] "semi_major_axis_error_max"  "eccentricity"              
[19] "eccentricity_error_min"     "eccentricity_error_max"    
[21] "inclination"                "inclination_error_min"     
[23] "inclination_error_max"      "angular_distance"          
[25] "discovered"                 "updated"                   
[27] "omega"                      "omega_error_min"           
[29] "omega_error_max"            "tperi"                     
[31] "tperi_error_min"            "tperi_error_max"           
[33] "tconj"                      "tconj_error_min"           
[35] "tconj_error_max"            "tzero_tr"                  
[37] "tzero_tr_error_min"         "tzero_tr_error_max"        
[39] "tzero_tr_sec"               "tzero_tr_sec_error_min"    
[41] "tzero_tr_sec_error_max"     "lambda_angle"              
[43] "lambda_angle_error_min"     "lambda_angle_error_max"    
[45] "impact_parameter"           "impact_parameter_error_min"
[47] "impact_parameter_error_max" "tzero_vr"                  
[49] "tzero_vr_error_min"         "tzero_vr_error_max"        
[51] "k"                          "k_error_min"               
[53] "k_error_max"                "temp_calculated"           
[55] "temp_calculated_error_min"  "temp_calculated_error_max" 
[57] "temp_measured"              "hot_point_lon"             
[59] "geometric_albedo"           "geometric_albedo_error_min"
[61] "geometric_albedo_error_max" "log_g"                     
[63] "publication"                "detection_type"            
[65] "mass_measurement_type"      "radius_measurement_type"   
[67] "alternate_names"            "molecules"                 
[69] "star_name"                  "ra"                        
[71] "dec"                        "mag_v"                     
[73] "mag_i"                      "mag_j"                     
[75] "mag_h"                      "mag_k"                     
[77] "star_distance"              "star_distance_error_min"   
[79] "star_distance_error_max"    "star_metallicity"          
[81] "star_metallicity_error_min" "star_metallicity_error_max"
[83] "star_mass"                  "star_mass_error_min"       
[85] "star_mass_error_max"        "star_radius"               
[87] "star_radius_error_min"      "star_radius_error_max"     
[89] "star_sp_type"               "star_age"                  
[91] "star_age_error_min"         "star_age_error_max"        
[93] "star_teff"                  "star_teff_error_min"       
[95] "star_teff_error_max"        "star_detected_disc"        
[97] "star_magnetic_field"        "star_alternate_names"      
library(janitor)
exoplanets %>% tabyl(planet_status)
 planet_status    n percent
     Confirmed 7418       1
library(data.table)
data.table 1.17.0 using 4 threads (see ?getDTthreads).  Latest news: r-datatable.com
# options(repr.matrix.max.rows=100)
exoplanets %>% 
  add_prop_miss() %>%
  arrange(prop_miss_all) %>% 
  head(5) %>% 
  data.table::transpose(keep.names="column") -> preview

preview
# preview %>% View()

We have a lot of features: - Planet name - Mass (M jup) - Mass*sin(i) (M jup) - This describes minimum mass of the planet due to inclination effect - Radius (Rjup) - Period (day) - a / the average distance of the planet and its star - it’s in AU (astronomical units), which is the standard distance used for these types of things - 1 AU is the average distance tween the earth and the sun - e / eccentry of a planet (between 0 and 1) - represenets how much of a circle is the orbit - e = 0 means perfect circle, e > 1 means its not bound to the star - Discovery - year when it was discovered - update - year it was updated -

conflicts_prefer(dplyr::filter)
[conflicted] Will prefer dplyr::filter over any other package.
exoplanets %>% 
  filter(name %>% str_like("%TOI-784%"))
conflicts_prefer(dplyr::filter)
[conflicted] Removing existing preference.[conflicted] Will prefer dplyr::filter over any other package.
exoplanets %>% 
  filter(discovered == 2023)
exoplanets %>%
  mutate(
    ra_rad = ra,  # Convert RA to radians
    dec_rad = dec  # Convert Dec to radians
  ) %>% 
  ggplot(aes(x = ra_rad, y = dec_rad, color = dec)) +
  geom_point(size = 0.4) +
  coord_map("aitoff") +  # Apply Aitoff projection
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = "none"  # Optionally remove legend
  )

# check columsn that start with star
exoplanets %>% 
  select(starts_with("star"))
library(dplyr)
library(plotly)
conflicts_prefer(plotly::layout)
[conflicted] Will prefer plotly::layout over any other package.
# Create a new column to distinguish Kepler exoplanets
exoplanets_3d <- exoplanets %>%
  mutate(
    ra_rad = ra * pi / 180,   # Convert RA from degrees to radians
    dec_rad = dec * pi / 180, # Convert Dec from degrees to radians
    x = cos(dec_rad) * cos(ra_rad), # Convert to Cartesian coordinates
    y = cos(dec_rad) * sin(ra_rad),
    z = sin(dec_rad),
    color = case_when(  # Create a column for red when kepler, blue otherwise
      str_detect(paste(name, alternate_names), regex("kepler|koi", ignore_case = TRUE)) ~ "Kepler",
      # if it's free floating (star_name is NA)
      star_name %>% is.na() ~ "Free Floating",
      TRUE ~ "Other"
    ),
    hover_text = paste("Name: ", name) # Create custom hover text with the name of the exoplanet
  )

# Define steps for opacity slider
steps <- list(
  list(args = list("marker.opacity", 0.0), label = "0.0", method = "restyle"),
  list(args = list("marker.opacity", 0.1), label = "0.1", method = "restyle"),
  list(args = list("marker.opacity", 0.2), label = "0.2", method = "restyle"),
  list(args = list("marker.opacity", 0.3), label = "0.3", method = "restyle"),
  list(args = list("marker.opacity", 0.4), label = "0.4", method = "restyle"),
  list(args = list("marker.opacity", 0.5), label = "0.5", method = "restyle"),
  list(args = list("marker.opacity", 0.6), label = "0.6", method = "restyle"),
  list(args = list("marker.opacity", 0.7), label = "0.7", method = "restyle"),
  list(args = list("marker.opacity", 0.8), label = "0.8", method = "restyle"),
  list(args = list("marker.opacity", 0.9), label = "0.9", method = "restyle"),
  list(args = list("marker.opacity", 1.0), label = "1.0", method = "restyle")
)

# Create an interactive 3D scatter plot with plotly
plot_ly(
  data = exoplanets_3d,
  x = ~x,
  y = ~y,
  z = ~z,
  color = ~color,  # Use the kepler_highlight column for color mapping
  colors = c("Other" = "red", "Kepler" = "blue", "Free Floating" = "green"),
  text = ~hover_text, # Show the name of the exoplanet on hover
  type = "scatter3d",
  mode = "markers",
  marker = list(size = 1, opacity = 0.7), # Default opacity
  showlegend = TRUE
) %>%
  layout(
    title = "3D Sky Map of Exoplanets (Kepler Highlighted)",
    scene = list(
      xaxis = list(title = "X"),
      yaxis = list(title = "Y"),
      zaxis = list(title = "Z")
    ),
    sliders = list(
      list(
        active = 1,  # Set the default opacity value to 1.0 (fully opaque)
        currentvalue = list(
          prefix = "Opacity: ",
          font = list(size = 15)
        ),
        pad = list(t = 60),
        steps = steps  # Use the steps defined earlier for the opacity slider
      )
    )
  )
Warning: Ignoring 1 observationsWarning: Ignoring 1 observations

# Assuming your data is loaded as 'exoplanets'
# Convert RA to degrees (if it's in hours:minutes:seconds format)
# If RA is already in degrees, skip this step
exoplanets %>%
  mutate(
    ra_deg = ra,  # Convert RA from hours to degrees (if needed)
    # Convert to polar coordinates for plotting
    # RA is mapped to theta (0-360 degrees)
    theta = ra_deg
  ) %>% 
ggplot(aes(x = theta, y = star_distance, color = mass)) +
  # Use coord_polar for circular plot
  coord_polar(start = 0, direction = -1) + # Start at 0 degrees, clockwise direction
  # Add concentric circles for distance reference
  geom_hline(yintercept = c(10, 100, 1000, 10000), 
             color = "gray", linetype = "solid", size = 0.3, alpha = 0.7) +
  # Add radial lines for angle reference
  geom_vline(xintercept = seq(0, 330, by = 30), 
             color = "gray", linetype = "solid", size = 0.3, alpha = 0.7) +
  # Plot the exoplanets
  geom_point(alpha = 0.8, size = 1) +
  # Use log scale for distance
  scale_y_log10(
    breaks = c(10, 100, 1000, 10000),
    labels = c("10 pc", "100 pc", "1000 pc", "10000 pc"),
    limits = c(1, 15000)
  ) +
  # Use log scale for mass colors
  scale_color_gradientn(
    colors = c("#1E90FF", "#32CD32", "#FFFF00", "#FFA500", "#FF4500", "#FF0000"),
    trans = "log10",
    breaks = c(0.0001, 0.001, 0.01, 0.1, 1, 10),
    labels = c("10⁻⁴", "10⁻³", "10⁻²", "10⁻¹", "10⁰", "10¹"),
    name = "Planetary Mass (MJup)"
  ) +
  # Remove grid and axis elements
  theme_minimal() +
  theme(
    axis.title = element_blank(),
    axis.text.y = element_blank(),
    axis.text.x = element_blank(),
    panel.grid = element_blank(),
    legend.position = "bottom",
    legend.box = "horizontal",
    plot.title = element_text(hjust = 0.5)
  ) +
  ggtitle("Exoplanet Distribution")
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
Please use `linewidth` instead.

library(dplyr)
library(plotly)

# Create a new column to distinguish Kepler exoplanets
exoplanets_3d <- exoplanets %>%
  mutate(
    ra_rad = ra * pi / 180,   # Convert RA from degrees to radians
    dec_rad = dec * pi / 180, # Convert Dec from degrees to radians
    x = cos(dec_rad) * cos(ra_rad), # Convert to Cartesian coordinates
    y = cos(dec_rad) * sin(ra_rad),
    z = sin(dec_rad),
    color = case_when(  # Create a column for red when kepler, blue otherwise
      str_detect(paste(name, alternate_names), regex("kepler|koi", ignore_case = TRUE)) ~ "Kepler",
      # if it's free floating (star_name is NA)
      star_name %>% is.na() ~ "Free Floating",
      TRUE ~ "Other"
    ),
    hover_text = paste("Name: ", name), # Create custom hover text with the name of the exoplanet
    scaled_x = x * (1 / star_distance),  # Adjust x coordinate by star distance (closer = closer to center)
    scaled_y = y * (1 / star_distance),  # Adjust y coordinate similarly
    scaled_z = z * (1 / star_distance)   # Adjust z coordinate similarly
  )

# Define steps for opacity slider
steps <- list(
  list(args = list("marker.opacity", 0.0), label = "0.0", method = "restyle"),
  list(args = list("marker.opacity", 0.1), label = "0.1", method = "restyle"),
  list(args = list("marker.opacity", 0.2), label = "0.2", method = "restyle"),
  list(args = list("marker.opacity", 0.3), label = "0.3", method = "restyle"),
  list(args = list("marker.opacity", 0.4), label = "0.4", method = "restyle"),
  list(args = list("marker.opacity", 0.5), label = "0.5", method = "restyle"),
  list(args = list("marker.opacity", 0.6), label = "0.6", method = "restyle"),
  list(args = list("marker.opacity", 0.7), label = "0.7", method = "restyle"),
  list(args = list("marker.opacity", 0.8), label = "0.8", method = "restyle"),
  list(args = list("marker.opacity", 0.9), label = "0.9", method = "restyle"),
  list(args = list("marker.opacity", 1.0), label = "1.0", method = "restyle")
)

# Create an interactive 3D scatter plot with plotly
fig <- plot_ly(
  data = exoplanets_3d,
  x = ~scaled_x,
  y = ~scaled_y,
  z = ~scaled_z,
  color = ~color,  # Use the kepler_highlight column for color mapping
  colors = c("Other" = "red", "Kepler" = "blue", "Free Floating" = "green"),
  text = ~hover_text, # Show the name of the exoplanet on hover
  type = "scatter3d",
  mode = "markers",
  marker = list(size = 2, opacity = 0.7), # Default opacity
  showlegend = TRUE
)

# Add layout with a slider for opacity
fig <- fig %>% layout(
  title = "3D Sky Map of Exoplanets (Kepler Highlighted)",
  scene = list(
    xaxis = list(title = "X"),
    yaxis = list(title = "Y"),
    zaxis = list(title = "Z")
  ),
  sliders = list(
    list(
      active = 1,  # Set the default opacity value to 1.0 (fully opaque)
      currentvalue = list(
        prefix = "Opacity: ",
        font = list(size = 15)
      ),
      pad = list(t = 60),
      steps = steps  # Use the steps defined earlier for the opacity slider
    )
  )
)

fig
Warning: Ignoring 357 observationsWarning: Ignoring 357 observations
exoplanets %>% names()
 [1] "name"                       "planet_status"             
 [3] "mass"                       "mass_error_min"            
 [5] "mass_error_max"             "mass_sini"                 
 [7] "mass_sini_error_min"        "mass_sini_error_max"       
 [9] "radius"                     "radius_error_min"          
[11] "radius_error_max"           "orbital_period"            
[13] "orbital_period_error_min"   "orbital_period_error_max"  
[15] "semi_major_axis"            "semi_major_axis_error_min" 
[17] "semi_major_axis_error_max"  "eccentricity"              
[19] "eccentricity_error_min"     "eccentricity_error_max"    
[21] "inclination"                "inclination_error_min"     
[23] "inclination_error_max"      "angular_distance"          
[25] "discovered"                 "updated"                   
[27] "omega"                      "omega_error_min"           
[29] "omega_error_max"            "tperi"                     
[31] "tperi_error_min"            "tperi_error_max"           
[33] "tconj"                      "tconj_error_min"           
[35] "tconj_error_max"            "tzero_tr"                  
[37] "tzero_tr_error_min"         "tzero_tr_error_max"        
[39] "tzero_tr_sec"               "tzero_tr_sec_error_min"    
[41] "tzero_tr_sec_error_max"     "lambda_angle"              
[43] "lambda_angle_error_min"     "lambda_angle_error_max"    
[45] "impact_parameter"           "impact_parameter_error_min"
[47] "impact_parameter_error_max" "tzero_vr"                  
[49] "tzero_vr_error_min"         "tzero_vr_error_max"        
[51] "k"                          "k_error_min"               
[53] "k_error_max"                "temp_calculated"           
[55] "temp_calculated_error_min"  "temp_calculated_error_max" 
[57] "temp_measured"              "hot_point_lon"             
[59] "geometric_albedo"           "geometric_albedo_error_min"
[61] "geometric_albedo_error_max" "log_g"                     
[63] "publication"                "detection_type"            
[65] "mass_measurement_type"      "radius_measurement_type"   
[67] "alternate_names"            "molecules"                 
[69] "star_name"                  "ra"                        
[71] "dec"                        "mag_v"                     
[73] "mag_i"                      "mag_j"                     
[75] "mag_h"                      "mag_k"                     
[77] "star_distance"              "star_distance_error_min"   
[79] "star_distance_error_max"    "star_metallicity"          
[81] "star_metallicity_error_min" "star_metallicity_error_max"
[83] "star_mass"                  "star_mass_error_min"       
[85] "star_mass_error_max"        "star_radius"               
[87] "star_radius_error_min"      "star_radius_error_max"     
[89] "star_sp_type"               "star_age"                  
[91] "star_age_error_min"         "star_age_error_max"        
[93] "star_teff"                  "star_teff_error_min"       
[95] "star_teff_error_max"        "star_detected_disc"        
[97] "star_magnetic_field"        "star_alternate_names"      
# check how many are missing
exoplanets %>% 
  select(ra, dec, angular_distance) %>% 
  mutate(ra = ra %>% is.na(), dec = dec %>% is.na(), angular_distance = angular_distance %>% is.na()) %>%
  summarise_all(mean) %>%
  gather(key="column", value="percentage")
# check which ones dont have ra
exoplanets %>% 
  filter(ra %>% is.na())
# check out alternate names
exoplanets %>% 
  select(name, alternate_names) %>% 
  filter(alternate_names %>% str_length() > 0)
NA
exoplanets %>% 
  tabyl(publication)
                            publication    n     percent
 Announced on a professional conference   55 0.007414397
                 Announced on a website 2357 0.317740631
          Published in a refereed paper 4873 0.656915611
    Submitted to a professional journal  133 0.017929361
# remove any column with error in the name
exoplanets_r <- exoplanets %>% 
  select(-contains("error")) %>% 
  select(-planet_status, -publication) %>% # useless
  select(-hot_point_lon, ) # too many missings
exoplanets_r %>% names
 [1] "name"                    "mass"                   
 [3] "mass_sini"               "radius"                 
 [5] "orbital_period"          "semi_major_axis"        
 [7] "eccentricity"            "inclination"            
 [9] "angular_distance"        "discovered"             
[11] "updated"                 "omega"                  
[13] "tperi"                   "tconj"                  
[15] "tzero_tr"                "tzero_tr_sec"           
[17] "lambda_angle"            "impact_parameter"       
[19] "tzero_vr"                "k"                      
[21] "temp_calculated"         "temp_measured"          
[23] "geometric_albedo"        "log_g"                  
[25] "detection_type"          "mass_measurement_type"  
[27] "radius_measurement_type" "alternate_names"        
[29] "molecules"               "star_name"              
[31] "ra"                      "dec"                    
[33] "mag_v"                   "mag_i"                  
[35] "mag_j"                   "mag_h"                  
[37] "mag_k"                   "star_distance"          
[39] "star_metallicity"        "star_mass"              
[41] "star_radius"             "star_sp_type"           
[43] "star_age"                "star_teff"              
[45] "star_detected_disc"      "star_magnetic_field"    
[47] "star_alternate_names"   
library(visdat)
vis_dat(exoplanets_r)

vis_miss(exoplanets_r, sort_miss = T, cluster = T)

detection type

exoplanets %>% 
  tabyl("detection_type") %>% 
  arrange(-n)
                       detection_type    n      percent
                      Primary Transit 4509 0.6078457805
                      Radial Velocity 1145 0.1543542734
                              Imaging  922 0.1242922621
                         Microlensing  313 0.0421946616
                               Timing  160 0.0215691561
          Radial Velocity, Astrometry   99 0.0133459153
                  Imaging, Astrometry   49 0.0066055541
                           Astrometry   46 0.0062011324
                       Imaging, Other   46 0.0062011324
                                Other   42 0.0056619035
                                  TTV   32 0.0043138312
                    Timing, Kinematic   10 0.0013480723
     Primary Transit, Radial Velocity    7 0.0009436506
     Radial Velocity, Primary Transit    7 0.0009436506
                        Timing, Other    6 0.0008088434
          Astrometry, Radial Velocity    3 0.0004044217
            Imaging, Other, Kinematic    3 0.0004044217
                   Imaging, Kinematic    2 0.0002696145
                            Kinematic    2 0.0002696145
                 Primary Transit, TTV    2 0.0002696145
             Radial Velocity, Imaging    2 0.0002696145
                  Astrometry, Imaging    1 0.0001348072
           Imaging, Other, Astrometry    1 0.0001348072
             Imaging, Primary Transit    1 0.0001348072
 Imaging, Radial Velocity, Astrometry    1 0.0001348072
                       Other, Imaging    1 0.0001348072
            Other, Imaging, Kinematic    1 0.0001348072
               Other, Radial Velocity    1 0.0001348072
          Primary Transit, Astrometry    1 0.0001348072
           Primary Transit, Kinematic    1 0.0001348072
              Radial Velocity, Timing    1 0.0001348072
                   Timing, Astrometry    1 0.0001348072
library(fastDummies)
exoplanets_rd <- exoplanets_r %>% 
  dummy_cols(select_columns = "detection_type", split = ", ")
exoplanets_rd %>% select(starts_with("detection_type")) %>% 
  unique
exoplanets_rd %>% 
  select(starts_with("detection_type")) %>% 
  gather(key="detection_type", value="value") %>% 
  filter(value == 1) %>% 
  group_by(detection_type) %>% 
  summarise(n = n(), percentage = n()*100 / nrow(exoplanets_rd)) %>% 
  arrange(-n)
library(naniar)
exoplanets_rd %>%
  group_by(`detection_type_Primary Transit`) %>% 
  miss_var_summary() %>% 
  arrange(variable) %>% 
  filter(variable %>% str_detect("detection_type", negate = T)) %>% 
  ggplot(aes(x = variable, y = pct_miss, fill = `detection_type_Primary Transit`)) +
  geom_col(position="dodge") +
  coord_flip() 

if (F){
library(misty)
exoplanets_rd %>% 
  select(tzero_vr, tzero_tr_sec, tzero_tr) %>% 
  na.test(data = exoplanets_rd)
} # didnt work for some reason
library(shiny)
library(dplyr)
library(plotly)
library(naniar)  # Assuming miss_var_summary() is from naniar

# Sample UI
ui <- fluidPage(
  titlePanel("Missing Data by Detection Type"),
  
  sidebarLayout(
    sidebarPanel(
      selectInput("group_var", "Select Detection Type:", 
                  choices = names(exoplanets_rd)[grepl("^detection_type_", names(exoplanets_rd))])
    ),
    
    mainPanel(
      plotlyOutput("missing_plot", height = "700px")  # Increased height
    )
  )
)

# Server function
server <- function(input, output) {
  output$missing_plot <- renderPlotly({
    exoplanets_rd %>%
      group_by(.data[[input$group_var]]) %>%
      miss_var_summary() %>%
      arrange(variable) %>%
      filter(!str_detect(variable, "detection_type")) %>%
      plot_ly(y = ~variable, x = ~pct_miss, color = ~.data[[input$group_var]], type = "bar") %>%
      layout(barmode = "group", height = 700)  # Increased plot height
  })
}
# Run the app
if (F) {
  shinyApp(ui = ui, server = server)
}

Kepler

# filter by the kepler
exoplanets %>% 
  filter(paste(name, alternate_names) %>% str_like("%Kepler%")) %>% 
  tabyl("detection_type")
                   detection_type    n      percent
                            Other    6 0.0021543986
                  Primary Transit 2722 0.9773788151
             Primary Transit, TTV    2 0.0007181329
                  Radial Velocity   26 0.0093357271
 Radial Velocity, Primary Transit    1 0.0003590664
                              TTV   23 0.0082585278
                           Timing    5 0.0017953321
# check other
exoplanets %>% 
  filter(detection_type == "Other")
exoplanets_rd %>% 
  select(name, star_distance, star_name)
conflicts_prefer(lubridate::yday)
[conflicted] Will prefer lubridate::yday over any other package.
conflicts_prefer(lubridate::year)
[conflicted] Will prefer lubridate::year over any other package.
year_with_percentage <- function(date) {
  percentage_of_year <- yday(date) / ifelse(leap_year(date), 366, 365)
  year(date) + percentage_of_year
}

exoplanets_rd %>% 
  mutate(updated = updated %>% year_with_percentage) %>% 
  mutate(diff_disc_updated = updated - discovered) -> exoplanets_rdd
exoplanets_rdd %>% 
  select(discovered, updated, diff_disc_updated)
exoplanets_rddk <- exoplanets_rdd %>% 
  mutate(is_kepler = paste(name, alternate_names) %>% str_detect("kepler" %>% regex(ignore_case = T)))
exoplanets_rddk %>%
  select(name, is_kepler) %>% 
  arrange(-is_kepler)
exoplanets %>%
  filter(publication %>% is_na)

Modeling

# transform into is shadow matrix
library(naniar)
exoplanets_rddk %>% 
  select(-name, -discovered, -updated, -diff_disc_updated, -is_kepler, -star_distance, -starts_with("detection_type")) %>%
  janitor::remove_constant() %>%
  as_shadow() -> shadow_matrix
# add columns to exoplanets_rd
shadow_exoplanets <- exoplanets_rddk %>% 
  bind_cols(shadow_matrix) %>% 
  # select everyone that ends with _NA
  select(name, starts_with("detection_type_"), discovered, updated, diff_disc_updated, is_kepler, star_distance, ra, dec, ends_with("_NA")) %>% 
  # change detection_type to factor
  mutate_at(vars(starts_with("detection_type_")), as.factor) %>% 
  janitor::clean_names()
# TODO reduce dimensionality on the _NA 
shadow_exoplanets

clustering

TODO

model

shadow_exoplanets %>% glimpse
Rows: 7,418
Columns: 58
$ name                           <chr> "109 Psc b", "112 Psc b", "112 Psc c"…
$ detection_type_astrometry      <fct> 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1…
$ detection_type_imaging         <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1…
$ detection_type_radial_velocity <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0…
$ detection_type_kinematic       <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_other           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_primary_transit <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_microlensing    <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_ttv             <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_timing          <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ discovered                     <dbl> 2000, 2022, 2022, 2007, 2009, 2008, 2…
$ updated                        <dbl> 2024.454, 2024.454, 2024.454, 2024.58…
$ diff_disc_updated              <dbl> 24.4535519, 2.4535519, 2.4535519, 17.…
$ is_kepler                      <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FA…
$ star_distance                  <dbl> 32.5600, 31.7627, 31.7627, 110.6000, …
$ ra                             <dbl> 26.23260, 30.03816, 30.03816, 185.179…
$ dec                            <dbl> 20.0831500, 3.0970140, 3.0970140, 17.…
$ mass_na                        <fct> !NA, NA, !NA, NA, NA, NA, !NA, !NA, N…
$ mass_sini_na                   <fct> !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA…
$ radius_na                      <fct> !NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ orbital_period_na              <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ semi_major_axis_na             <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ eccentricity_na                <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ inclination_na                 <fct> !NA, NA, !NA, NA, NA, NA, !NA, !NA, N…
$ angular_distance_na            <fct> !NA, NA, NA, !NA, !NA, !NA, !NA, !NA,…
$ omega_na                       <fct> !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA…
$ tperi_na                       <fct> !NA, NA, NA, !NA, !NA, !NA, !NA, !NA,…
$ tconj_na                       <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_na                    <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_sec_na                <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ lambda_angle_na                <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ impact_parameter_na            <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_vr_na                    <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ k_na                           <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ temp_calculated_na             <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ temp_measured_na               <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ geometric_albedo_na            <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ log_g_na                       <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ mass_measurement_type_na       <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ radius_measurement_type_na     <fct> !NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ alternate_names_na             <fct> !NA, !NA, !NA, NA, NA, NA, NA, !NA, N…
$ molecules_na                   <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ star_name_na                   <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ ra_na                          <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ dec_na                         <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ mag_v_na                       <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ mag_i_na                       <fct> NA, NA, NA, NA, NA, !NA, NA, NA, NA, …
$ mag_j_na                       <fct> NA, !NA, !NA, NA, NA, !NA, NA, NA, NA…
$ mag_h_na                       <fct> NA, !NA, !NA, NA, NA, !NA, NA, NA, NA…
$ mag_k_na                       <fct> NA, !NA, !NA, NA, NA, !NA, NA, NA, NA…
$ star_metallicity_na            <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ star_mass_na                   <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ star_radius_na                 <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ star_sp_type_na                <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ star_age_na                    <fct> !NA, NA, NA, NA, !NA, NA, !NA, !NA, !…
$ star_teff_na                   <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ star_detected_disc_na          <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ star_alternate_names_na        <fct> !NA, !NA, !NA, !NA, NA, NA, NA, NA, !…
library(rpart)
library(dplyr)
library(purrr)

set.seed(123)

# Define target and predictor columns
target_cols <- names(shadow_exoplanets) %>% 
  keep(~ startsWith(.x, "detection_type_"))

predictor_cols <- names(shadow_exoplanets) %>% 
  setdiff(c("name", target_cols))

# Train decision trees for each target label
models <- target_cols %>%
  set_names() %>%
  map(~ rpart(as.formula(paste(.x, "~", paste(predictor_cols, collapse = " + "))),
              data = shadow_exoplanets, method = "class"))

# Make predictions and add them to the original dataset
shadow_exoplanets_with_preds <- shadow_exoplanets %>%
  bind_cols(models %>%
    map_dfc(~ predict(.x, shadow_exoplanets, type = "class")) %>%
    rename_with(~ paste0("pred_", target_cols))  # Prefix predictions for clarity
  )

predictions <- shadow_exoplanets_with_preds %>%
  mutate(
    actual_combined = apply(select(., all_of(target_cols)), 1, paste, collapse = "_"),
    predicted_combined = apply(select(., starts_with("pred_")), 1, paste, collapse = "_")
  ) %>% select(actual_combined, predicted_combined, starts_with("pred_"), starts_with("detection_type_"))
predictions
multi_label_confusion_matrix <- function(y_true, y_pred) {
  result <- list()
  
  for (col in names(y_true)) {
    confusion_matrix <- table(y_true[[col]], y_pred[[paste0("pred_", col)]])
    result[[col]] <- confusion_matrix
  }
  
  return(result)
}
multi_label_confusion_matrix(shadow_exoplanets_with_preds %>% select(starts_with("detection_type_")), predictions %>% select(starts_with("pred_")))
$detection_type_astrometry
   
       0    1
  0 7194   22
  1   86  116

$detection_type_imaging
   
       0    1
  0 6335   53
  1   58  972

$detection_type_radial_velocity
   
       0    1
  0 6075   77
  1   83 1183

$detection_type_kinematic
   
       0    1
  0 7399    0
  1   19    0

$detection_type_other
   
       0    1
  0 7314    3
  1   70   31

$detection_type_primary_transit
   
       0    1
  0 2785  105
  1   70 4458

$detection_type_microlensing
   
       0    1
  0 7096    9
  1   14  299

$detection_type_ttv
   
       0    1
  0 7383    1
  1   26    8

$detection_type_timing
   
       0    1
  0 7222   18
  1   48  130
# Load necessary library
library(rpart.plot)

# Plot the decision trees with titles
target_cols %>%
  map2(models, ~ {
    rpart.plot(.y, 
               type = 4, 
               extra = 101, 
               under = TRUE, 
               fallen.leaves = TRUE,
               main = paste("Decision Tree for", .x))  # Title with the target label
  })

[[1]]
[[1]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

   1) root 7418 202 0 (0.972768940 0.027231060)  
     2) star_distance>=108.984 5157  26 0 (0.994958309 0.005041691) *
     3) star_distance< 108.984 2261 176 0 (0.922158337 0.077841663)  
       6) mass_na=NA 968   1 0 (0.998966942 0.001033058) *
       7) mass_na=!NA 1293 175 0 (0.864655839 0.135344161)  
        14) radius_na=!NA 690  18 0 (0.973913043 0.026086957) *
        15) radius_na=NA 603 157 0 (0.739635158 0.260364842)  
          30) inclination_na=NA 371  42 0 (0.886792453 0.113207547)  
            60) updated< 2024.638 260  12 0 (0.953846154 0.046153846) *
            61) updated>=2024.638 111  30 0 (0.729729730 0.270270270)  
             122) mass_measurement_type_na=NA 59   2 0 (0.966101695 0.033898305) *
             123) mass_measurement_type_na=!NA 52  24 1 (0.461538462 0.538461538)  
               246) updated>=2024.642 45  21 0 (0.533333333 0.466666667)  
                 492) dec>=-36.07075 34  12 0 (0.647058824 0.352941176) *
                 493) dec< -36.07075 11   2 1 (0.181818182 0.818181818) *
               247) updated< 2024.642 7   0 1 (0.000000000 1.000000000) *
          31) inclination_na=!NA 232 115 0 (0.504310345 0.495689655)  
            62) updated< 2024.422 53   4 0 (0.924528302 0.075471698) *
            63) updated>=2024.422 179  68 1 (0.379888268 0.620111732)  
             126) diff_disc_updated>=4.168493 90  37 0 (0.588888889 0.411111111)  
               252) dec>=-47.80806 80  28 0 (0.650000000 0.350000000)  
                 504) omega_na=NA 12   0 0 (1.000000000 0.000000000) *
                 505) omega_na=!NA 68  28 0 (0.588235294 0.411764706)  
                  1010) ra< 242.6082 51  16 0 (0.686274510 0.313725490)  
                    2020) star_distance< 41.1811 36   7 0 (0.805555556 0.194444444) *
                    2021) star_distance>=41.1811 15   6 1 (0.400000000 0.600000000) *
                  1011) ra>=242.6082 17   5 1 (0.294117647 0.705882353) *
               253) dec< -47.80806 10   1 1 (0.100000000 0.900000000) *
             127) diff_disc_updated< 4.168493 89  15 1 (0.168539326 0.831460674)  
               254) tperi_na=!NA 11   4 0 (0.636363636 0.363636364) *
               255) tperi_na=NA 78   8 1 (0.102564103 0.897435897) *

[[1]]$snipped.nodes
NULL

[[1]]$xlim
[1] 0 1

[[1]]$ylim
[1] 0 1

[[1]]$x
 [1] 0.11257349 0.02115644 0.20399053 0.08593918 0.32204188 0.15072191 0.49336185 0.28433631 0.21550465 0.35316796 0.28028739 0.42604854 0.37746149 0.34507012
[15] 0.40985286 0.47463559 0.70238740 0.53941833 0.86535647 0.77020683 0.67708164 0.60420106 0.74996222 0.70137517 0.66898380 0.73376654 0.79854927 0.86333201
[29] 0.96050611 0.92811474 0.99289748

[[1]]$y
 [1] 0.97711079 0.01400365 0.88955560 0.01400365 0.80200040 0.01400365 0.71444521 0.62689001 0.01400365 0.53933482 0.01400365 0.45177962 0.36422443 0.01400365
[15] 0.01400365 0.01400365 0.62689001 0.01400365 0.53933482 0.45177962 0.36422443 0.01400365 0.27666923 0.18911404 0.01400365 0.01400365 0.01400365 0.01400365
[29] 0.45177962 0.01400365 0.01400365

[[1]]$branch.x
       [,1]       [,2]      [,3]       [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.1125735 0.02115644 0.2039905 0.08593918 0.3220419 0.1507219 0.4933619 0.2843363 0.2155046 0.3531680 0.2802874 0.4260485 0.3774615 0.3450701 0.4098529
         NA 0.02115644 0.2039905 0.08593918 0.3220419 0.1507219 0.4933619 0.2843363 0.2155046 0.3531680 0.2802874 0.4260485 0.3774615 0.3450701 0.4098529
         NA 0.11257349 0.1125735 0.20399053 0.2039905 0.3220419 0.3220419 0.4933619 0.2843363 0.2843363 0.3531680 0.3531680 0.4260485 0.3774615 0.3774615
      [,16]     [,17]     [,18]     [,19]     [,20]     [,21]     [,22]     [,23]     [,24]     [,25]     [,26]     [,27]     [,28]     [,29]     [,30]     [,31]
x 0.4746356 0.7023874 0.5394183 0.8653565 0.7702068 0.6770816 0.6042011 0.7499622 0.7013752 0.6689838 0.7337665 0.7985493 0.8633320 0.9605061 0.9281147 0.9928975
  0.4746356 0.7023874 0.5394183 0.8653565 0.7702068 0.6770816 0.6042011 0.7499622 0.7013752 0.6689838 0.7337665 0.7985493 0.8633320 0.9605061 0.9281147 0.9928975
  0.4260485 0.4933619 0.7023874 0.7023874 0.8653565 0.7702068 0.6770816 0.6770816 0.7499622 0.7013752 0.7013752 0.7499622 0.7702068 0.8653565 0.9605061 0.9605061

[[1]]$branch.y
       [,1]       [,2]      [,3]       [,4]      [,5]       [,6]      [,7]      [,8]       [,9]     [,10]      [,11]     [,12]     [,13]      [,14]      [,15]
y 0.9990316 0.03592447 0.9114764 0.03592447 0.8239212 0.03592447 0.7363660 0.6488108 0.03592447 0.5612556 0.03592447 0.4737004 0.3861452 0.03592447 0.03592447
         NA 0.99165086 0.9916509 0.90409567 0.9040957 0.81654047 0.8165405 0.7289853 0.64143008 0.6414301 0.55387489 0.5538749 0.4663197 0.37876450 0.37876450
         NA 0.99165086 0.9916509 0.90409567 0.9040957 0.81654047 0.8165405 0.7289853 0.64143008 0.6414301 0.55387489 0.5538749 0.4663197 0.37876450 0.37876450
       [,16]     [,17]      [,18]     [,19]     [,20]     [,21]      [,22]     [,23]     [,24]      [,25]      [,26]      [,27]      [,28]     [,29]      [,30]
y 0.03592447 0.6488108 0.03592447 0.5612556 0.4737004 0.3861452 0.03592447 0.2985901 0.2110349 0.03592447 0.03592447 0.03592447 0.03592447 0.4737004 0.03592447
  0.46631969 0.7289853 0.64143008 0.6414301 0.5538749 0.4663197 0.37876450 0.3787645 0.2912093 0.20365411 0.20365411 0.29120930 0.46631969 0.5538749 0.46631969
  0.46631969 0.7289853 0.64143008 0.6414301 0.5538749 0.4663197 0.37876450 0.3787645 0.2912093 0.20365411 0.20365411 0.29120930 0.46631969 0.5538749 0.46631969
       [,31]
y 0.03592447
  0.46631969
  0.46631969

[[1]]$labs
 [1] "0\n\n7216  202\n100%" "0\n\n5131  26\n70%"   "0\n\n2085  176\n30%"  "0\n\n967  1\n13%"     "0\n\n1118  175\n17%"  "0\n\n672  18\n9%"    
 [7] "0\n\n446  157\n8%"    "0\n\n329  42\n5%"     "0\n\n248  12\n4%"     "0\n\n81  30\n1%"      "0\n\n57  2\n1%"       "1\n\n24  28\n1%"     
[13] "0\n\n24  21\n1%"      "0\n\n22  12\n0%"      "1\n\n2  9\n0%"        "1\n\n0  7\n0%"        "0\n\n117  115\n3%"    "0\n\n49  4\n1%"      
[19] "1\n\n68  111\n2%"     "0\n\n53  37\n1%"      "0\n\n52  28\n1%"      "0\n\n12  0\n0%"       "0\n\n40  28\n1%"      "0\n\n35  16\n1%"     
[25] "0\n\n29  7\n0%"       "1\n\n6  9\n0%"        "1\n\n5  12\n0%"       "1\n\n1  9\n0%"        "1\n\n15  74\n1%"      "0\n\n7  4\n0%"       
[31] "1\n\n8  70\n1%"      

[[1]]$cex
[1] 0.175

[[1]]$boxes
[[1]]$boxes$x1
 [1] 0.10946324 0.01804620 0.20088029 0.08282894 0.31893164 0.14761167 0.49025161 0.28122607 0.21239441 0.35005772 0.27717714 0.42293830 0.37435125 0.34195988
[15] 0.40674262 0.47152535 0.69927716 0.53630809 0.86224623 0.76709658 0.67397140 0.60109082 0.74685198 0.69826493 0.66587356 0.73065630 0.79543903 0.86022177
[29] 0.95739587 0.92500450 0.98978724

[[1]]$boxes$y1
 [1] 0.98427011 0.02116297 0.89671492 0.02116297 0.80915973 0.02116297 0.72160453 0.63404934 0.02116297 0.54649414 0.02116297 0.45893895 0.37138375 0.02116297
[15] 0.02116297 0.02116297 0.63404934 0.02116297 0.54649414 0.45893895 0.37138375 0.02116297 0.28382856 0.19627336 0.02116297 0.02116297 0.02116297 0.02116297
[29] 0.45893895 0.02116297 0.02116297

[[1]]$boxes$x2
 [1] 0.11568373 0.02426668 0.20710077 0.08904942 0.32515212 0.15383215 0.49647209 0.28744655 0.21861489 0.35627820 0.28339763 0.42915878 0.38057173 0.34818036
[15] 0.41296310 0.47774583 0.70549764 0.54252857 0.86846671 0.77331707 0.68019188 0.60731131 0.75307246 0.70448541 0.67209404 0.73687678 0.80165951 0.86644225
[29] 0.96361635 0.93122499 0.99600772

[[1]]$boxes$y2
 [1] 0.99903161 0.03592447 0.91147641 0.03592447 0.82392122 0.03592447 0.73636602 0.64881083 0.03592447 0.56125563 0.03592447 0.47370044 0.38614525 0.03592447
[15] 0.03592447 0.03592447 0.64881083 0.03592447 0.56125563 0.47370044 0.38614525 0.03592447 0.29859005 0.21103486 0.03592447 0.03592447 0.03592447 0.03592447
[29] 0.47370044 0.03592447 0.03592447


[[1]]$split.labs
[1] ""

[[1]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[1]]$split.box
[[1]]$split.box$x1
 [1] -0.0006152452            NA  0.0706989967            NA  0.1342376362            NA  0.2641197400  0.1996424204            NA  0.2445196143            NA
[12]  0.3603551638  0.3341842777            NA            NA            NA  0.5235561001            NA  0.7450138741  0.6661957994  0.5877167878            NA
[23]  0.6926664941  0.6497003069            NA            NA            NA            NA  0.9134966121            NA            NA

[[1]]$split.box$y1
 [1] 0.9428641        NA 0.8553089        NA 0.7677537        NA 0.6801985 0.5926433        NA 0.5050881        NA 0.4175330 0.3299778        NA        NA
[16]        NA 0.5926433        NA 0.5050881 0.4175330 0.3299778        NA 0.2424226 0.1548674        NA        NA        NA        NA 0.4175330        NA
[31]        NA

[[1]]$split.box$x2
 [1] 0.04292813         NA 0.10117936         NA 0.16720619         NA 0.30455287 0.23136688         NA 0.31605516         NA 0.39456781 0.35595596         NA
[15]         NA         NA 0.55528056         NA 0.79539978 0.68796749 0.62068534         NA 0.71008384 0.68826729         NA         NA         NA         NA
[29] 0.94273288         NA         NA

[[1]]$split.box$y2
 [1] 0.9576256        NA 0.8700704        NA 0.7825152        NA 0.6949600 0.6074048        NA 0.5198496        NA 0.4322944 0.3447393        NA        NA
[16]        NA 0.6074048        NA 0.5198496 0.4322944 0.3447393        NA 0.2571841 0.1696289        NA        NA        NA        NA 0.4322944        NA
[31]        NA



[[2]]
[[2]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 1030 0 (0.861148558 0.138851442)  
   2) star_name_na=!NA 6638  302 0 (0.954504369 0.045495631)  
     4) orbital_period_na=!NA 6083   55 0 (0.990958409 0.009041591) *
     5) orbital_period_na=NA 555  247 0 (0.554954955 0.445045045)  
      10) star_distance>=413.175 282    3 0 (0.989361702 0.010638298) *
      11) star_distance< 413.175 273   29 1 (0.106227106 0.893772894) *
   3) star_name_na=NA 780   52 1 (0.066666667 0.933333333)  
     6) star_distance>=947.5 28    0 0 (1.000000000 0.000000000) *
     7) star_distance< 947.5 752   24 1 (0.031914894 0.968085106) *

[[2]]$snipped.nodes
NULL

[[2]]$xlim
[1] 0 1

[[2]]$ylim
[1] 0 1

[[2]]$x
[1] 0.55371072 0.24874130 0.08239435 0.41508826 0.30419029 0.52598623 0.85868014 0.74778217 0.96957811

[[2]]$y
[1] 0.92779006 0.66029712 0.04506335 0.39280417 0.04506335 0.04506335 0.66029712 0.04506335 0.04506335

[[2]]$branch.x
       [,1]      [,2]       [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]
x 0.5537107 0.2487413 0.08239435 0.4150883 0.3041903 0.5259862 0.8586801 0.7477822 0.9695781
         NA 0.2487413 0.08239435 0.4150883 0.3041903 0.5259862 0.8586801 0.7477822 0.9695781
         NA 0.5537107 0.24874130 0.2487413 0.4150883 0.4150883 0.5537107 0.8586801 0.8586801

[[2]]$branch.y
      [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]
y 1.003443 0.7359498 0.1207160 0.4684568 0.1207160 0.1207160 0.7359498 0.1207160 0.1207160
        NA 0.9788402 0.7113473 0.7113473 0.4438543 0.4438543 0.9788402 0.7113473 0.7113473
        NA 0.9788402 0.7113473 0.7113473 0.4438543 0.4438543 0.9788402 0.7113473 0.7113473

[[2]]$labs
[1] "0\n\n6388  1030\n100%" "0\n\n6336  302\n89%"   "0\n\n6028  55\n82%"    "0\n\n308  247\n7%"     "0\n\n279  3\n4%"       "1\n\n29  244\n4%"     
[7] "1\n\n52  728\n11%"     "0\n\n28  0\n0%"        "1\n\n24  728\n10%"    

[[2]]$cex
[1] 0.625

[[2]]$boxes
[[2]]$boxes$x1
[1] 0.5428249 0.2378555 0.0715085 0.4042024 0.2933044 0.5151004 0.8477943 0.7368963 0.9586923

[[2]]$boxes$y1
[1] 0.95423774 0.68674479 0.07151102 0.41925185 0.07151102 0.07151102 0.68674479 0.07151102 0.07151102

[[2]]$boxes$x2
[1] 0.56459656 0.25962715 0.09328019 0.42597410 0.31507613 0.53687207 0.86956598 0.75866801 0.98046395

[[2]]$boxes$y2
[1] 1.0034427 0.7359498 0.1207160 0.4684568 0.1207160 0.1207160 0.7359498 0.1207160 0.1207160


[[2]]$split.labs
[1] ""

[[2]]$split.cex
[1] 1 1 1 1 1 1 1 1 1

[[2]]$split.box
[[2]]$split.box$x1
[1]  0.17017662 -0.01047745          NA  0.22438151          NA          NA  0.66797339          NA          NA

[[2]]$split.box$y1
[1] 0.8136345 0.5461416        NA 0.2786486        NA        NA 0.5461416        NA        NA

[[2]]$split.box$x2
[1] 0.3273060 0.1752661        NA 0.3839991        NA        NA 0.8275910        NA        NA

[[2]]$split.box$y2
[1] 0.8628395 0.5953465        NA 0.3278536        NA        NA 0.5953465        NA        NA



[[3]]
[[3]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 1266 0 (0.829334052 0.170665948)  
   2) mass_sini_na=NA 6011  138 0 (0.977042090 0.022957910)  
     4) omega_na=NA 5264   27 0 (0.994870821 0.005129179) *
     5) omega_na=!NA 747  111 0 (0.851405622 0.148594378)  
      10) radius_na=!NA 598   16 0 (0.973244147 0.026755853) *
      11) radius_na=NA 149   54 1 (0.362416107 0.637583893)  
        22) k_na=NA 59   13 0 (0.779661017 0.220338983) *
        23) k_na=!NA 90    8 1 (0.088888889 0.911111111) *
   3) mass_sini_na=!NA 1407  279 1 (0.198294243 0.801705757)  
     6) star_distance>=228.4595 256   61 0 (0.761718750 0.238281250)  
      12) tperi_na=NA 208   21 0 (0.899038462 0.100961538) *
      13) tperi_na=!NA 48    8 1 (0.166666667 0.833333333) *
     7) star_distance< 228.4595 1151   84 1 (0.072980017 0.927019983)  
      14) impact_parameter_na=!NA 29    6 0 (0.793103448 0.206896552) *
      15) impact_parameter_na=NA 1122   61 1 (0.054367201 0.945632799) *

[[3]]$snipped.nodes
NULL

[[3]]$xlim
[1] 0 1

[[3]]$ylim
[1] 0 1

[[3]]$x
 [1] 0.46609815 0.15887906 0.04263399 0.27512412 0.17548549 0.37476275 0.30833700 0.44118850 0.77331725 0.64046575 0.57404000 0.70689150 0.90616875 0.83974300
[15] 0.97259450

[[3]]$y
 [1] 0.94452006 0.73769510 0.03449025 0.53087015 0.03449025 0.32404519 0.03449025 0.03449025 0.73769510 0.53087015 0.03449025 0.03449025 0.53087015 0.03449025
[15] 0.03449025

[[3]]$branch.x
       [,1]      [,2]       [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.4660982 0.1588791 0.04263399 0.2751241 0.1754855 0.3747627 0.3083370 0.4411885 0.7733172 0.6404657 0.5740400 0.7068915 0.9061687 0.8397430 0.9725945
         NA 0.1588791 0.04263399 0.2751241 0.1754855 0.3747627 0.3083370 0.4411885 0.7733172 0.6404657 0.5740400 0.7068915 0.9061687 0.8397430 0.9725945
         NA 0.4660982 0.15887906 0.1588791 0.2751241 0.2751241 0.3747627 0.3747627 0.4660982 0.7733172 0.6404657 0.6404657 0.7733172 0.9061687 0.9061687

[[3]]$branch.y
      [,1]      [,2]       [,3]      [,4]       [,5]      [,6]       [,7]       [,8]      [,9]     [,10]      [,11]      [,12]     [,13]      [,14]      [,15]
y 1.000872 0.7940471 0.09084226 0.5872222 0.09084226 0.3803972 0.09084226 0.09084226 0.7940471 0.5872222 0.09084226 0.09084226 0.5872222 0.09084226 0.09084226
        NA 0.9824202 0.77559524 0.7755952 0.56877028 0.5687703 0.36194533 0.36194533 0.9824202 0.7755952 0.56877028 0.56877028 0.7755952 0.56877028 0.56877028
        NA 0.9824202 0.77559524 0.7755952 0.56877028 0.5687703 0.36194533 0.36194533 0.9824202 0.7755952 0.56877028 0.56877028 0.7755952 0.56877028 0.56877028

[[3]]$labs
 [1] "0\n\n6152  1266\n100%" "0\n\n5873  138\n81%"   "0\n\n5237  27\n71%"    "0\n\n636  111\n10%"    "0\n\n582  16\n8%"      "1\n\n54  95\n2%"      
 [7] "0\n\n46  13\n1%"       "1\n\n8  82\n1%"        "1\n\n279  1128\n19%"   "0\n\n195  61\n3%"      "0\n\n187  21\n3%"      "1\n\n8  40\n1%"       
[13] "1\n\n84  1067\n16%"    "0\n\n23  6\n0%"        "1\n\n61  1061\n15%"   

[[3]]$cex
[1] 0.4625

[[3]]$boxes
[[3]]$boxes$x1
 [1] 0.45801153 0.15079243 0.03454737 0.26703749 0.16739887 0.36667612 0.30025037 0.43310187 0.76523062 0.63237912 0.56595337 0.69880487 0.89808212 0.83165637
[15] 0.96450787

[[3]]$boxes$y1
 [1] 0.96396833 0.75714337 0.05393852 0.55031842 0.05393852 0.34349346 0.05393852 0.05393852 0.75714337 0.55031842 0.05393852 0.05393852 0.55031842 0.05393852
[15] 0.05393852

[[3]]$boxes$x2
 [1] 0.47418478 0.16696568 0.05072062 0.28321075 0.18357212 0.38284937 0.31642362 0.44927512 0.78140387 0.64855237 0.58212662 0.71497812 0.91425537 0.84782962
[15] 0.98068112

[[3]]$boxes$y2
 [1] 1.00087206 0.79404711 0.09084226 0.58722215 0.09084226 0.38039720 0.09084226 0.09084226 0.79404711 0.58722215 0.09084226 0.09084226 0.58722215 0.09084226
[15] 0.09084226


[[3]]$split.labs
[1] ""

[[3]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[3]]$split.box
[[3]]$split.box$x1
 [1]  0.103392359 -0.003210957           NA  0.129329519           NA  0.278665297           NA           NA  0.580002663  0.534726551           NA           NA
[13]  0.759685396           NA           NA

[[3]]$split.box$y1
 [1] 0.8589034 0.6520784        NA 0.4452535        NA 0.2384285        NA        NA 0.6520784 0.4452535        NA        NA 0.4452535        NA        NA

[[3]]$split.box$x2
 [1] 0.21436576 0.08847895         NA 0.22164147         NA 0.33800869         NA         NA 0.70092883 0.61335344         NA         NA 0.91980060         NA
[15]         NA

[[3]]$split.box$y2
 [1] 0.8958071 0.6889822        NA 0.4821572        NA 0.2753323        NA        NA 0.6889822 0.4821572        NA        NA 0.4821572        NA        NA



[[4]]
[[4]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 7418 19 0 (0.997438663 0.002561337) *

[[4]]$snipped.nodes
NULL

[[4]]$xlim
[1] 0 1

[[4]]$ylim
[1] 0 1

[[4]]$x
[1] 0.5

[[4]]$y
[1] 0.5

[[4]]$branch.x
  [,1]
x  0.5
    NA
    NA

[[4]]$branch.y
  [,1]
y  0.5
    NA
    NA

[[4]]$labs
[1] "0\n\n7399  19\n100%"

[[4]]$cex
[1] 1

[[4]]$boxes
[[4]]$boxes$x1
[1] 0.4819606

[[4]]$boxes$y1
[1] 0.5429313

[[4]]$boxes$x2
[1] 0.5180394

[[4]]$boxes$y2
[1] 0.6191991


[[4]]$split.labs
[1] ""

[[4]]$split.cex
[1] 1

[[4]]$split.box
[[4]]$split.box$x1
[1] NA

[[4]]$split.box$y1
[1] NA

[[4]]$split.box$x2
[1] NA

[[4]]$split.box$y2
[1] NA



[[5]]
[[5]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 101 0 (0.986384470 0.013615530)  
   2) diff_disc_updated< 11.64617 6239  34 0 (0.994550409 0.005449591) *
   3) diff_disc_updated>=11.64617 1179  67 0 (0.943172180 0.056827820)  
     6) star_distance< 143.995 791  16 0 (0.979772440 0.020227560) *
     7) star_distance>=143.995 388  51 0 (0.868556701 0.131443299)  
      14) star_distance>=145.3505 353  31 0 (0.912181303 0.087818697)  
        28) ra>=84.77248 276  11 0 (0.960144928 0.039855072) *
        29) ra< 84.77248 77  20 0 (0.740259740 0.259740260)  
          58) ra< 84.7573 64   7 0 (0.890625000 0.109375000) *
          59) ra>=84.7573 13   0 1 (0.000000000 1.000000000) *
      15) star_distance< 145.3505 35  15 1 (0.428571429 0.571428571)  
        30) temp_calculated_na=NA 14   2 0 (0.857142857 0.142857143) *
        31) temp_calculated_na=!NA 21   3 1 (0.142857143 0.857142857) *

[[5]]$snipped.nodes
NULL

[[5]]$xlim
[1] 0 1

[[5]]$ylim
[1] 0 1

[[5]]$x
 [1] 0.24782098 0.04721646 0.44842549 0.20378584 0.69306514 0.47778225 0.36035521 0.59520928 0.51692459 0.67349396 0.90834803 0.83006334 0.98663272

[[5]]$y
 [1] 0.95519506 0.02769075 0.78655791 0.02769075 0.61792077 0.44928362 0.02769075 0.28064647 0.02769075 0.02769075 0.44928362 0.02769075 0.02769075

[[5]]$branch.x
      [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]
x 0.247821 0.04721646 0.4484255 0.2037858 0.6930651 0.4777822 0.3603552 0.5952093 0.5169246 0.6734940 0.9083480 0.8300633 0.9866327
        NA 0.04721646 0.4484255 0.2037858 0.6930651 0.4777822 0.3603552 0.5952093 0.5169246 0.6734940 0.9083480 0.8300633 0.9866327
        NA 0.24782098 0.2478210 0.4484255 0.4484255 0.6930651 0.4777822 0.4777822 0.5952093 0.5952093 0.6930651 0.9083480 0.9083480

[[5]]$branch.y
       [,1]       [,2]      [,3]       [,4]      [,5]      [,6]       [,7]      [,8]       [,9]      [,10]     [,11]      [,12]      [,13]
y 0.9998117 0.07230737 0.8311745 0.07230737 0.6625374 0.4939002 0.07230737 0.3252631 0.07230737 0.07230737 0.4939002 0.07230737 0.07230737
         NA 0.98505018 0.9850502 0.81641303 0.8164130 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160 0.6477759 0.47913874 0.47913874
         NA 0.98505018 0.9850502 0.81641303 0.8164130 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160 0.6477759 0.47913874 0.47913874

[[5]]$labs
 [1] "0\n\n7317  101\n100%" "0\n\n6205  34\n84%"   "0\n\n1112  67\n16%"   "0\n\n775  16\n11%"    "0\n\n337  51\n5%"     "0\n\n322  31\n5%"    
 [7] "0\n\n265  11\n4%"     "0\n\n57  20\n1%"      "0\n\n57  7\n1%"       "1\n\n0  13\n0%"       "1\n\n15  20\n0%"      "0\n\n12  2\n0%"      
[13] "1\n\n3  18\n0%"      

[[5]]$cex
[1] 0.3625

[[5]]$boxes
[[5]]$boxes$x1
 [1] 0.24191152 0.04130701 0.44251603 0.19787638 0.68715568 0.47187279 0.35444576 0.58929982 0.51101513 0.66758451 0.90243857 0.82415388 0.98072326

[[5]]$boxes$y1
 [1] 0.97028869 0.04278438 0.80165154 0.04278438 0.63301439 0.46437725 0.04278438 0.29574010 0.04278438 0.04278438 0.46437725 0.04278438 0.04278438

[[5]]$boxes$x2
 [1] 0.25373043 0.05312592 0.45433495 0.20969530 0.69897459 0.48369170 0.36626467 0.60111873 0.52283405 0.67940342 0.91425749 0.83597280 0.99254217

[[5]]$boxes$y2
 [1] 0.99981168 0.07230737 0.83117453 0.07230737 0.66253738 0.49390024 0.07230737 0.32526309 0.07230737 0.07230737 0.49390024 0.07230737 0.07230737


[[5]]$split.labs
[1] ""

[[5]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1

[[5]]$split.box
[[5]]$split.box$x1
 [1] -0.00304503          NA  0.16067790          NA  0.43187509  0.34212920          NA  0.50149779          NA          NA  0.77420341          NA          NA

[[5]]$split.box$y1
 [1] 0.8867017        NA 0.7180646        NA 0.5494274 0.3807903        NA 0.2121531        NA        NA 0.3807903        NA        NA

[[5]]$split.box$x2
 [1] 0.09747796         NA 0.24689378         NA 0.52368940 0.37858123         NA 0.53235138         NA         NA 0.88592327         NA         NA

[[5]]$split.box$y2
 [1] 0.9162247        NA 0.7475876        NA 0.5789504 0.4103133        NA 0.2416761        NA        NA 0.4103133        NA        NA



[[6]]
[[6]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 2890 1 (0.38959288 0.61040712)  
   2) radius_na=NA 2444   43 0 (0.98240589 0.01759411) *
   3) radius_na=!NA 4974  489 1 (0.09831122 0.90168878)  
     6) orbital_period_na=NA 347   10 0 (0.97118156 0.02881844) *
     7) orbital_period_na=!NA 4627  152 1 (0.03285066 0.96714934)  
      14) discovered< 2006.5 64   17 0 (0.73437500 0.26562500) *
      15) discovered>=2006.5 4563  105 1 (0.02301118 0.97698882) *

[[6]]$snipped.nodes
NULL

[[6]]$xlim
[1] 0 1

[[6]]$ylim
[1] 0 1

[[6]]$x
[1] 0.3189600 0.0545808 0.5833392 0.3567285 0.8099500 0.6588761 0.9610238

[[6]]$y
[1] 0.92779006 0.04506335 0.66029712 0.04506335 0.39280417 0.04506335 0.04506335

[[6]]$branch.x
     [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
x 0.31896 0.0545808 0.5833392 0.3567285 0.8099500 0.6588761 0.9610238
       NA 0.0545808 0.5833392 0.3567285 0.8099500 0.6588761 0.9610238
       NA 0.3189600 0.3189600 0.5833392 0.5833392 0.8099500 0.8099500

[[6]]$branch.y
      [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
y 1.003443 0.1207160 0.7359498 0.1207160 0.4684568 0.1207160 0.1207160
        NA 0.9788402 0.9788402 0.7113473 0.7113473 0.4438543 0.4438543
        NA 0.9788402 0.9788402 0.7113473 0.7113473 0.4438543 0.4438543

[[6]]$labs
[1] "1\n\n2890  4528\n100%" "0\n\n2401  43\n33%"    "1\n\n489  4485\n67%"   "0\n\n337  10\n5%"      "1\n\n152  4475\n62%"   "0\n\n47  17\n1%"      
[7] "1\n\n105  4458\n62%"  

[[6]]$cex
[1] 0.625

[[6]]$boxes
[[6]]$boxes$x1
[1] 0.30807416 0.04369495 0.57245336 0.34584262 0.79906411 0.64799028 0.95013794

[[6]]$boxes$y1
[1] 0.95423774 0.07151102 0.68674479 0.07151102 0.41925185 0.07151102 0.07151102

[[6]]$boxes$x2
[1] 0.32984585 0.06546664 0.59422505 0.36761430 0.82083580 0.66976197 0.97190963

[[6]]$boxes$y2
[1] 1.0034427 0.1207160 0.7359498 0.1207160 0.4684568 0.1207160 0.1207160


[[6]]$split.labs
[1] ""

[[6]]$split.cex
[1] 1 1 1 1 1 1 1

[[6]]$split.box
[[6]]$split.box$x1
[1] -0.005633467           NA  0.266344858           NA  0.588398063           NA           NA

[[6]]$split.box$y1
[1] 0.8136345        NA 0.5461416        NA 0.2786486        NA        NA

[[6]]$split.box$x2
[1] 0.1147951        NA 0.4471121        NA 0.7293542        NA        NA

[[6]]$split.box$y2
[1] 0.8628395        NA 0.5953465        NA 0.3278536        NA        NA



[[7]]
[[7]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 313 0 (0.9578053384 0.0421946616)  
   2) star_distance< 2644 7095  65 0 (0.9908386187 0.0091613813)  
     4) orbital_period_na=!NA 6048   2 0 (0.9996693122 0.0003306878) *
     5) orbital_period_na=NA 1047  63 0 (0.9398280802 0.0601719198)  
      10) star_distance< 908 1018  39 0 (0.9616895874 0.0383104126)  
        20) updated>=2024.141 894   5 0 (0.9944071588 0.0055928412) *
        21) updated< 2024.141 124  34 0 (0.7258064516 0.2741935484)  
          42) ra< 256.95 82   1 0 (0.9878048780 0.0121951220) *
          43) ra>=256.95 42   9 1 (0.2142857143 0.7857142857)  
            86) ra>=276.3813 9   0 0 (1.0000000000 0.0000000000) *
            87) ra< 276.3813 33   0 1 (0.0000000000 1.0000000000) *
      11) star_distance>=908 29   5 1 (0.1724137931 0.8275862069) *
   3) star_distance>=2644 323  75 1 (0.2321981424 0.7678018576)  
     6) orbital_period_na=!NA 77   6 0 (0.9220779221 0.0779220779) *
     7) orbital_period_na=NA 246   4 1 (0.0162601626 0.9837398374) *

[[7]]$snipped.nodes
NULL

[[7]]$xlim
[1] 0 1

[[7]]$ylim
[1] 0 1

[[7]]$x
 [1] 0.59552940 0.27204608 0.03947638 0.50461579 0.29318878 0.17478966 0.41158791 0.31010294 0.51307287 0.44541623 0.58072951 0.71604279 0.91901272 0.85135607
[15] 0.98666936

[[7]]$y
 [1] 0.96299192 0.82050031 0.02254728 0.67800870 0.53551708 0.02254728 0.39302547 0.02254728 0.25053386 0.02254728 0.02254728 0.02254728 0.82050031 0.02254728
[15] 0.02254728

[[7]]$branch.x
       [,1]      [,2]       [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.5955294 0.2720461 0.03947638 0.5046158 0.2931888 0.1747897 0.4115879 0.3101029 0.5130729 0.4454162 0.5807295 0.7160428 0.9190127 0.8513561 0.9866694
         NA 0.2720461 0.03947638 0.5046158 0.2931888 0.1747897 0.4115879 0.3101029 0.5130729 0.4454162 0.5807295 0.7160428 0.9190127 0.8513561 0.9866694
         NA 0.5955294 0.27204608 0.2720461 0.5046158 0.2931888 0.2931888 0.4115879 0.4115879 0.5130729 0.5130729 0.5046158 0.5955294 0.9190127 0.9190127

[[7]]$branch.y
       [,1]      [,2]       [,3]      [,4]      [,5]       [,6]      [,7]       [,8]      [,9]      [,10]      [,11]      [,12]     [,13]      [,14]      [,15]
y 0.9992683 0.8567767 0.05882365 0.7142851 0.5717935 0.05882365 0.4293018 0.05882365 0.2868102 0.05882365 0.05882365 0.05882365 0.8567767 0.05882365 0.05882365
         NA 0.9869670 0.84447543 0.8444754 0.7019838 0.55949221 0.5594922 0.41700060 0.4170006 0.27450899 0.27450899 0.70198382 0.9869670 0.84447543 0.84447543
         NA 0.9869670 0.84447543 0.8444754 0.7019838 0.55949221 0.5594922 0.41700060 0.4170006 0.27450899 0.27450899 0.70198382 0.9869670 0.84447543 0.84447543

[[7]]$labs
 [1] "0\n\n7105  313\n100%" "0\n\n7030  65\n96%"   "0\n\n6046  2\n82%"    "0\n\n984  63\n14%"    "0\n\n979  39\n14%"    "0\n\n889  5\n12%"    
 [7] "0\n\n90  34\n2%"      "0\n\n81  1\n1%"       "1\n\n9  33\n1%"       "0\n\n9  0\n0%"        "1\n\n0  33\n0%"       "1\n\n5  24\n0%"      
[13] "1\n\n75  248\n4%"     "0\n\n71  6\n1%"       "1\n\n4  242\n3%"     

[[7]]$cex
[1] 0.2875

[[7]]$boxes
[[7]]$boxes$x1
 [1] 0.59055301 0.26706970 0.03449999 0.49963940 0.28821240 0.16981328 0.40661152 0.30512656 0.50809648 0.44043984 0.57575312 0.71106641 0.91403633 0.84637969
[15] 0.98169297

[[7]]$boxes$y1
 [1] 0.97466580 0.83217419 0.03422116 0.68968258 0.54719097 0.03422116 0.40469935 0.03422116 0.26220774 0.03422116 0.03422116 0.03422116 0.83217419 0.03422116
[15] 0.03422116

[[7]]$boxes$x2
 [1] 0.60050578 0.27702247 0.04445276 0.50959217 0.29816517 0.17976605 0.41656429 0.31507933 0.51804925 0.45039261 0.58570589 0.72101918 0.92398910 0.85633246
[15] 0.99164574

[[7]]$boxes$y2
 [1] 0.99926829 0.85677668 0.05882365 0.71428507 0.57179346 0.05882365 0.42930184 0.05882365 0.28681023 0.05882365 0.05882365 0.05882365 0.85677668 0.05882365
[15] 0.05882365


[[7]]$split.labs
[1] ""

[[7]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[7]]$split.box
[[7]]$split.box$x1
 [1]  0.23410114 -0.00220085          NA  0.25742101  0.14493135          NA  0.29517379          NA  0.42830990          NA          NA          NA  0.80967885
[14]          NA          NA

[[7]]$split.box$y1
 [1] 0.9059141 0.7634225        NA 0.6209309 0.4784393        NA 0.3359477        NA 0.1934561        NA        NA        NA 0.7634225        NA        NA

[[7]]$split.box$x2
 [1] 0.30999102 0.08115361         NA 0.32895655 0.20464797         NA 0.32503210         NA 0.46252255         NA         NA         NA 0.89303330         NA
[15]         NA

[[7]]$split.box$y2
 [1] 0.9305166 0.7880250        NA 0.6455334 0.5030418        NA 0.3605502        NA 0.2180586        NA        NA        NA 0.7880250        NA        NA



[[8]]
[[8]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 34 0 (0.995416554 0.004583446)  
   2) mass_measurement_type_na=NA 4320  6 0 (0.998611111 0.001388889) *
   3) mass_measurement_type_na=!NA 3098 28 0 (0.990961911 0.009038089)  
     6) is_kepler< 0.5 2916  9 0 (0.996913580 0.003086420) *
     7) is_kepler>=0.5 182 19 0 (0.895604396 0.104395604)  
      14) tconj_na=!NA 111  0 0 (1.000000000 0.000000000) *
      15) tconj_na=NA 71 19 0 (0.732394366 0.267605634)  
        30) updated>=2021.458 48  7 0 (0.854166667 0.145833333) *
        31) updated< 2021.458 23 11 1 (0.478260870 0.521739130)  
          62) mag_v_na=!NA 14  4 0 (0.714285714 0.285714286) *
          63) mag_v_na=NA 9  1 1 (0.111111111 0.888888889) *

[[8]]$snipped.nodes
NULL

[[8]]$xlim
[1] 0 1

[[8]]$ylim
[1] 0 1

[[8]]$x
 [1] 0.24761363 0.06940282 0.42582443 0.25336236 0.59828649 0.43732190 0.75925109 0.62128143 0.89722074 0.80524097 0.98920051

[[8]]$y
 [1] 0.95519506 0.02769075 0.78655791 0.02769075 0.61792077 0.02769075 0.44928362 0.02769075 0.28064647 0.02769075 0.02769075

[[8]]$branch.x
       [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]
x 0.2476136 0.06940282 0.4258244 0.2533624 0.5982865 0.4373219 0.7592511 0.6212814 0.8972207 0.8052410 0.9892005
         NA 0.06940282 0.4258244 0.2533624 0.5982865 0.4373219 0.7592511 0.6212814 0.8972207 0.8052410 0.9892005
         NA 0.24761363 0.2476136 0.4258244 0.4258244 0.5982865 0.5982865 0.7592511 0.7592511 0.8972207 0.8972207

[[8]]$branch.y
       [,1]       [,2]      [,3]       [,4]      [,5]       [,6]      [,7]       [,8]      [,9]      [,10]      [,11]
y 0.9998117 0.07230737 0.8311745 0.07230737 0.6625374 0.07230737 0.4939002 0.07230737 0.3252631 0.07230737 0.07230737
         NA 0.98505018 0.9850502 0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160
         NA 0.98505018 0.9850502 0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160

[[8]]$labs
 [1] "0\n\n7384  34\n100%" "0\n\n4314  6\n58%"   "0\n\n3070  28\n42%"  "0\n\n2907  9\n39%"   "0\n\n163  19\n2%"    "0\n\n111  0\n1%"     "0\n\n52  19\n1%"    
 [8] "0\n\n41  7\n1%"      "1\n\n11  12\n0%"     "0\n\n10  4\n0%"      "1\n\n1  8\n0%"      

[[8]]$cex
[1] 0.3625

[[8]]$boxes
[[8]]$boxes$x1
 [1] 0.24170417 0.06349337 0.41991497 0.24745290 0.59237703 0.43141244 0.75334163 0.61537198 0.89131128 0.79933151 0.98329105

[[8]]$boxes$y1
 [1] 0.97028869 0.04278438 0.80165154 0.04278438 0.63301439 0.04278438 0.46437725 0.04278438 0.29574010 0.04278438 0.04278438

[[8]]$boxes$x2
 [1] 0.25352308 0.07531228 0.43173388 0.25927182 0.60419595 0.44323136 0.76516055 0.62719089 0.90313020 0.81115043 0.99510997

[[8]]$boxes$y2
 [1] 0.99981168 0.07230737 0.83117453 0.07230737 0.66253738 0.07230737 0.49390024 0.07230737 0.32526309 0.07230737 0.07230737


[[8]]$split.labs
[1] ""

[[8]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1

[[8]]$split.box
[[8]]$split.box$x1
 [1] -0.006051621           NA  0.224561530           NA  0.405099802           NA  0.584393977           NA  0.769597611           NA           NA

[[8]]$split.box$y1
 [1] 0.8867017        NA 0.7180646        NA 0.5494274        NA 0.3807903        NA 0.2121531        NA        NA

[[8]]$split.box$x2
 [1] 0.1448573        NA 0.2821632        NA 0.4695440        NA 0.6581689        NA 0.8408843        NA        NA

[[8]]$split.box$y2
 [1] 0.9162247        NA 0.7475876        NA 0.5789504        NA 0.4103133        NA 0.2416761        NA        NA



[[9]]
[[9]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 178 0 (0.976004314 0.023995686)  
   2) star_distance< 2199.205 7073 111 0 (0.984306518 0.015693482)  
     4) star_metallicity_na=!NA 5214  12 0 (0.997698504 0.002301496) *
     5) star_metallicity_na=NA 1859  99 0 (0.946745562 0.053254438)  
      10) mass_sini_na=NA 1593  33 0 (0.979284369 0.020715631)  
        20) tperi_na=NA 1569  25 0 (0.984066284 0.015933716) *
        21) tperi_na=!NA 24   8 0 (0.666666667 0.333333333)  
          42) star_distance< 123.45 14   0 0 (1.000000000 0.000000000) *
          43) star_distance>=123.45 10   2 1 (0.200000000 0.800000000) *
      11) mass_sini_na=!NA 266  66 0 (0.751879699 0.248120301)  
        22) star_distance< 207.1075 191   6 0 (0.968586387 0.031413613) *
        23) star_distance>=207.1075 75  15 1 (0.200000000 0.800000000)  
          46) diff_disc_updated< 0.4678569 8   2 0 (0.750000000 0.250000000) *
          47) diff_disc_updated>=0.4678569 67   9 1 (0.134328358 0.865671642) *
   3) star_distance>=2199.205 345  67 0 (0.805797101 0.194202899)  
     6) orbital_period_na=NA 249   0 0 (1.000000000 0.000000000) *
     7) orbital_period_na=!NA 96  29 1 (0.302083333 0.697916667)  
      14) star_metallicity_na=!NA 18   2 0 (0.888888889 0.111111111) *
      15) star_metallicity_na=NA 78  13 1 (0.166666667 0.833333333)  
        30) angular_distance_na=!NA 7   1 0 (0.857142857 0.142857143) *
        31) angular_distance_na=NA 71   7 1 (0.098591549 0.901408451) *

[[9]]$snipped.nodes
NULL

[[9]]$xlim
[1] 0 1

[[9]]$ylim
[1] 0 1

[[9]]$x
 [1] 0.49520907 0.20266719 0.05054542 0.35478897 0.21436887 0.14415882 0.28457892 0.23777222 0.33138562 0.49520907 0.42499902 0.56541912 0.51861242 0.61222582
[15] 0.78775094 0.70583922 0.86966267 0.79945262 0.93987272 0.89306602 0.98667942

[[9]]$y
 [1] 0.95519506 0.78655791 0.02769075 0.61792077 0.44928362 0.02769075 0.28064647 0.02769075 0.02769075 0.44928362 0.02769075 0.28064647 0.02769075 0.02769075
[15] 0.78655791 0.02769075 0.61792077 0.02769075 0.44928362 0.02769075 0.02769075

[[9]]$branch.x
       [,1]      [,2]       [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.4952091 0.2026672 0.05054542 0.3547890 0.2143689 0.1441588 0.2845789 0.2377722 0.3313856 0.4952091 0.4249990 0.5654191 0.5186124 0.6122258 0.7877509
         NA 0.2026672 0.05054542 0.3547890 0.2143689 0.1441588 0.2845789 0.2377722 0.3313856 0.4952091 0.4249990 0.5654191 0.5186124 0.6122258 0.7877509
         NA 0.4952091 0.20266719 0.2026672 0.3547890 0.2143689 0.2143689 0.2845789 0.2845789 0.3547890 0.4952091 0.4952091 0.5654191 0.5654191 0.4952091
      [,16]     [,17]     [,18]     [,19]     [,20]     [,21]
x 0.7058392 0.8696627 0.7994526 0.9398727 0.8930660 0.9866794
  0.7058392 0.8696627 0.7994526 0.9398727 0.8930660 0.9866794
  0.7877509 0.7877509 0.8696627 0.8696627 0.9398727 0.9398727

[[9]]$branch.y
       [,1]      [,2]       [,3]      [,4]      [,5]       [,6]      [,7]       [,8]       [,9]     [,10]      [,11]     [,12]      [,13]      [,14]     [,15]
y 0.9998117 0.8311745 0.07230737 0.6625374 0.4939002 0.07230737 0.3252631 0.07230737 0.07230737 0.4939002 0.07230737 0.3252631 0.07230737 0.07230737 0.8311745
         NA 0.9850502 0.81641303 0.8164130 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160 0.9850502
         NA 0.9850502 0.81641303 0.8164130 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160 0.9850502
       [,16]     [,17]      [,18]     [,19]      [,20]      [,21]
y 0.07230737 0.6625374 0.07230737 0.4939002 0.07230737 0.07230737
  0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.47913874
  0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.47913874

[[9]]$labs
 [1] "0\n\n7240  178\n100%" "0\n\n6962  111\n95%"  "0\n\n5202  12\n70%"   "0\n\n1760  99\n25%"   "0\n\n1560  33\n21%"   "0\n\n1544  25\n21%"  
 [7] "0\n\n16  8\n0%"       "0\n\n14  0\n0%"       "1\n\n2  8\n0%"        "0\n\n200  66\n4%"     "0\n\n185  6\n3%"      "1\n\n15  60\n1%"     
[13] "0\n\n6  2\n0%"        "1\n\n9  58\n1%"       "0\n\n278  67\n5%"     "0\n\n249  0\n3%"      "1\n\n29  67\n1%"      "0\n\n16  2\n0%"      
[19] "1\n\n13  65\n1%"      "0\n\n6  1\n0%"        "1\n\n7  64\n1%"      

[[9]]$cex
[1] 0.3625

[[9]]$boxes
[[9]]$boxes$x1
 [1] 0.48929961 0.19675773 0.04463596 0.34887951 0.20845941 0.13824936 0.27866946 0.23186276 0.32547616 0.48929961 0.41908956 0.55950966 0.51270296 0.60631636
[15] 0.78184149 0.69992976 0.86375321 0.79354316 0.93396326 0.88715656 0.98076996

[[9]]$boxes$y1
 [1] 0.97028869 0.80165154 0.04278438 0.63301439 0.46437725 0.04278438 0.29574010 0.04278438 0.04278438 0.46437725 0.04278438 0.29574010 0.04278438 0.04278438
[15] 0.80165154 0.04278438 0.63301439 0.04278438 0.46437725 0.04278438 0.04278438

[[9]]$boxes$x2
 [1] 0.50111853 0.20857665 0.05645487 0.36069842 0.22027832 0.15006827 0.29048837 0.24368167 0.33729507 0.50111853 0.43090848 0.57132858 0.52452188 0.61813528
[15] 0.79366040 0.71174868 0.87557213 0.80536208 0.94578218 0.89897548 0.99258888

[[9]]$boxes$y2
 [1] 0.99981168 0.83117453 0.07230737 0.66253738 0.49390024 0.07230737 0.32526309 0.07230737 0.07230737 0.49390024 0.07230737 0.32526309 0.07230737 0.07230737
[15] 0.83117453 0.07230737 0.66253738 0.07230737 0.49390024 0.07230737 0.07230737


[[9]]$split.labs
[1] ""

[[9]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[9]]$split.box
[[9]]$split.box$x1
 [1]  0.157071059 -0.003448367           NA  0.172816048  0.113802865           NA  0.194664277           NA           NA  0.381891078           NA  0.464618635
[13]           NA           NA  0.654955677           NA  0.745458836           NA  0.834095851           NA           NA

[[9]]$split.box$y1
 [1] 0.8867017 0.7180646        NA 0.5494274 0.3807903        NA 0.2121531        NA        NA 0.3807903        NA 0.2121531        NA        NA 0.7180646
[16]        NA 0.5494274        NA 0.3807903        NA        NA

[[9]]$split.box$x2
 [1] 0.2482633 0.1045392        NA 0.2559217 0.1745148        NA 0.2808802        NA        NA 0.4681070        NA 0.5726062        NA        NA 0.7567228
[16]        NA 0.8534464        NA 0.9520362        NA        NA

[[9]]$split.box$y2
 [1] 0.9162247 0.7475876        NA 0.5789504 0.4103133        NA 0.2416761        NA        NA 0.4103133        NA 0.2416761        NA        NA 0.7475876
[16]        NA 0.5789504        NA 0.4103133        NA        NA

# get accuracy
accuracy <- function(y_true, y_pred) {
  result <- list()
  
  for (col in names(y_true)) {
    confusion_matrix <- table(y_true[[col]], y_pred[[paste0("pred_", col)]])
    result[[col]] <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
  }
  
  return(result)
}

accuracy(shadow_exoplanets_with_preds %>% select(starts_with("detection_type_")), predictions %>% select(starts_with("pred_")))
$detection_type_astrometry
[1] 0.9854408

$detection_type_imaging
[1] 0.9850364

$detection_type_radial_velocity
[1] 0.9784308

$detection_type_kinematic
[1] 0.9974387

$detection_type_other
[1] 0.9901591

$detection_type_primary_transit
[1] 0.9764087

$detection_type_microlensing
[1] 0.9968994

$detection_type_ttv
[1] 0.9963602

$detection_type_timing
[1] 0.9911027
set.seed(123)

shadow_exoplanets %>% 
  select(-name, -starts_with("detection_type"), -ends_with("_na"), -discovered, -updated, -diff_disc_updated, -is_kepler) %>% 
  as_shadow() %>% 
  bind_cols(shadow_exoplanets) %>% 
  select(-discovered, -updated, -diff_disc_updated, -is_kepler, -star_distance, -ra, -dec) %>%
  relocate(name, starts_with("detection_type")) -> shadower_exoplanets

shadower_exoplanets %>% glimpse
Rows: 7,418
Columns: 54
$ name                           <chr> "109 Psc b", "112 Psc b", "112 Psc c", "11 Com Ab", "11 UMi b", "14 And Ab", "14 Her b", "14 Her c", "16 Cyg Bb", "18 Del…
$ detection_type_astrometry      <fct> 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_imaging         <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ detection_type_radial_velocity <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_kinematic       <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_other           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_primary_transit <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_microlensing    <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_ttv             <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ detection_type_timing          <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ star_distance_NA               <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA,…
$ ra_NA                          <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ dec_NA                         <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ mass_na                        <fct> !NA, NA, !NA, NA, NA, NA, !NA, !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, NA, !NA, !NA, NA, !NA, !NA, …
$ mass_sini_na                   <fct> !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, !NA, NA, …
$ radius_na                      <fct> !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, !NA, !NA, NA, !NA,…
$ orbital_period_na              <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, !NA, NA,…
$ semi_major_axis_na             <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, NA…
$ eccentricity_na                <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, !NA, NA, !…
$ inclination_na                 <fct> !NA, NA, !NA, NA, NA, NA, !NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, …
$ angular_distance_na            <fct> !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, !NA, !NA, NA, !NA, !NA, NA, NA, !NA, NA, NA, NA,…
$ omega_na                       <fct> !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, !NA…
$ tperi_na                       <fct> !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, …
$ tconj_na                       <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_na                    <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_tr_sec_na                <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ lambda_angle_na                <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ impact_parameter_na            <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ tzero_vr_na                    <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ k_na                           <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, NA, NA, !NA, NA, NA…
$ temp_calculated_na             <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, !NA, NA, NA, !NA, !N…
$ temp_measured_na               <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA,…
$ geometric_albedo_na            <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ log_g_na                       <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA,…
$ mass_measurement_type_na       <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, NA, !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, …
$ radius_measurement_type_na     <fct> !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, !NA, !NA, NA, NA, !…
$ alternate_names_na             <fct> !NA, !NA, !NA, NA, NA, NA, NA, !NA, NA, NA, !NA, !NA, !NA, !NA, NA, NA, !NA, !NA, NA, NA, NA, !NA, !NA, !NA, NA, !NA, !NA…
$ molecules_na                   <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, !NA, NA, NA, NA, NA, NA, NA…
$ star_name_na                   <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, !NA,…
$ ra_na                          <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ dec_na                         <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !N…
$ mag_v_na                       <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, N…
$ mag_i_na                       <fct> NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, !NA, NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ mag_j_na                       <fct> NA, !NA, !NA, NA, NA, !NA, NA, NA, NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, N…
$ mag_h_na                       <fct> NA, !NA, !NA, NA, NA, !NA, NA, NA, NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, N…
$ mag_k_na                       <fct> NA, !NA, !NA, NA, NA, !NA, NA, NA, NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, NA, N…
$ star_metallicity_na            <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA, NA…
$ star_mass_na                   <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, …
$ star_radius_na                 <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, N…
$ star_sp_type_na                <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, N…
$ star_age_na                    <fct> !NA, NA, NA, NA, !NA, NA, !NA, !NA, !NA, NA, !NA, NA, !NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, NA, NA…
$ star_teff_na                   <fct> !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, !NA, !NA, !NA, !NA, !NA, !NA, !NA, NA, NA, NA, N…
$ star_detected_disc_na          <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ star_alternate_names_na        <fct> !NA, !NA, !NA, !NA, NA, NA, NA, NA, !NA, !NA, !NA, !NA, !NA, NA, !NA, NA, !NA, !NA, NA, NA, NA, !NA, NA, NA, NA, NA, NA, …
# Do the same thing with shadower_exoplanets


# Define target and predictor columns
target_cols <- names(shadower_exoplanets) %>% 
  keep(~ startsWith(.x, "detection_type_"))

predictor_cols <- names(shadower_exoplanets) %>%
  setdiff(c("name", target_cols))

# Train decision trees for each target label
models <- target_cols %>%
  set_names() %>%
  map(~ rpart(as.formula(paste(.x, "~", paste(predictor_cols, collapse = " + "))),
              data = shadower_exoplanets, method = "class"))

# Make predictions and add them to the original dataset
shadower_exoplanets_with_preds <- shadower_exoplanets %>%
  bind_cols(models %>%
    map_dfc(~ predict(.x, shadower_exoplanets, type = "class")) %>%
    rename_with(~ paste0("pred_", target_cols))  # Prefix predictions for clarity
  )

predictions <- shadower_exoplanets_with_preds %>%
  mutate(
    actual_combined = apply(select(., all_of(target_cols)), 1, paste, collapse = "_"),
    predicted_combined = apply(select(., starts_with("pred_")), 1, paste, collapse = "_")
  ) %>% select(actual_combined, predicted_combined, starts_with("pred_"), starts_with("detection_type_"))
predictions
# accuracy
accuracy(shadower_exoplanets_with_preds %>% select(starts_with("detection_type_")), predictions %>% select(starts_with("pred_")))
$detection_type_astrometry
[1] 0.9791049

$detection_type_imaging
[1] 0.9766783

$detection_type_radial_velocity
[1] 0.9800485

$detection_type_kinematic
[1] 0.9974387

$detection_type_other
[1] 0.9863845

$detection_type_primary_transit
[1] 0.9723645

$detection_type_microlensing
[1] 0.9912375

$detection_type_ttv
[1] 0.995821

$detection_type_timing
[1] 0.9889458
# plot
target_cols %>%
  map2(models, ~ {
    rpart.plot(.y, 
               type = 4, 
               extra = 101, 
               under = TRUE, 
               fallen.leaves = TRUE,
               main = paste("Decision Tree for", .x))  # Title with the target label
  })

[[1]]
[[1]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

  1) root 7418 202 0 (0.972768940 0.027231060)  
    2) radius_na=!NA 4974  21 0 (0.995778046 0.004221954) *
    3) radius_na=NA 2444 181 0 (0.925941080 0.074058920)  
      6) inclination_na=NA 2146  52 0 (0.975768872 0.024231128) *
      7) inclination_na=!NA 298 129 0 (0.567114094 0.432885906)  
       14) mag_k_na=NA 198  62 0 (0.686868687 0.313131313) *
       15) mag_k_na=!NA 100  33 1 (0.330000000 0.670000000)  
         30) mass_measurement_type_na=NA 7   0 0 (1.000000000 0.000000000) *
         31) mass_measurement_type_na=!NA 93  26 1 (0.279569892 0.720430108)  
           62) alternate_names_na=!NA 29  14 1 (0.482758621 0.517241379)  
            124) mass_sini_na=!NA 10   2 0 (0.800000000 0.200000000) *
            125) mass_sini_na=NA 19   6 1 (0.315789474 0.684210526) *
           63) alternate_names_na=NA 64  12 1 (0.187500000 0.812500000) *

[[1]]$snipped.nodes
NULL

[[1]]$xlim
[1] 0 1

[[1]]$ylim
[1] 0 1

[[1]]$x
 [1] 0.18954181 0.02715255 0.35193106 0.18704351 0.51681862 0.34693447 0.68670277 0.50682543 0.86658010 0.74666188 0.66671640 0.82660736 0.98649832

[[1]]$y
 [1] 0.96299192 0.02254728 0.82050031 0.02254728 0.67800870 0.02254728 0.53551708 0.02254728 0.39302547 0.25053386 0.02254728 0.02254728 0.02254728

[[1]]$branch.x
       [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]
x 0.1895418 0.02715255 0.3519311 0.1870435 0.5168186 0.3469345 0.6867028 0.5068254 0.8665801 0.7466619 0.6667164 0.8266074 0.9864983
         NA 0.02715255 0.3519311 0.1870435 0.5168186 0.3469345 0.6867028 0.5068254 0.8665801 0.7466619 0.6667164 0.8266074 0.9864983
         NA 0.18954181 0.1895418 0.3519311 0.3519311 0.5168186 0.5168186 0.6867028 0.6867028 0.8665801 0.7466619 0.7466619 0.8665801

[[1]]$branch.y
       [,1]       [,2]      [,3]       [,4]      [,5]       [,6]      [,7]       [,8]      [,9]     [,10]      [,11]      [,12]      [,13]
y 0.9992683 0.05882365 0.8567767 0.05882365 0.7142851 0.05882365 0.5717935 0.05882365 0.4293018 0.2868102 0.05882365 0.05882365 0.05882365
         NA 0.98696705 0.9869670 0.84447543 0.8444754 0.70198382 0.7019838 0.55949221 0.5594922 0.4170006 0.27450899 0.27450899 0.41700060
         NA 0.98696705 0.9869670 0.84447543 0.8444754 0.70198382 0.7019838 0.55949221 0.5594922 0.4170006 0.27450899 0.27450899 0.41700060

[[1]]$labs
 [1] "0\n\n7216  202\n100%" "0\n\n4953  21\n67%"   "0\n\n2263  181\n33%"  "0\n\n2094  52\n29%"   "0\n\n169  129\n4%"    "0\n\n136  62\n3%"    
 [7] "1\n\n33  67\n1%"      "0\n\n7  0\n0%"        "1\n\n26  67\n1%"      "1\n\n14  15\n0%"      "0\n\n8  2\n0%"        "1\n\n6  13\n0%"      
[13] "1\n\n12  52\n1%"     

[[1]]$cex
[1] 0.2875

[[1]]$boxes
[[1]]$boxes$x1
 [1] 0.18456542 0.02217616 0.34695468 0.18206712 0.51184223 0.34195809 0.68172638 0.50184905 0.86160371 0.74168549 0.66174001 0.82163097 0.98152194

[[1]]$boxes$y1
 [1] 0.97466580 0.03422116 0.83217419 0.03422116 0.68968258 0.03422116 0.54719097 0.03422116 0.40469935 0.26220774 0.03422116 0.03422116 0.03422116

[[1]]$boxes$x2
 [1] 0.19451819 0.03212893 0.35690745 0.19201990 0.52179501 0.35191086 0.69167915 0.51180182 0.87155648 0.75163826 0.67169278 0.83158374 0.99147471

[[1]]$boxes$y2
 [1] 0.99926829 0.05882365 0.85677668 0.05882365 0.71428507 0.05882365 0.57179346 0.05882365 0.42930184 0.28681023 0.05882365 0.05882365 0.05882365


[[1]]$split.labs
[1] ""

[[1]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1

[[1]]$split.box
[[1]]$split.box$x1
 [1] -0.001150644           NA  0.152830860           NA  0.318631280           NA  0.443998568           NA  0.699386215  0.631259650           NA           NA
[13]           NA

[[1]]$split.box$y1
 [1] 0.9059141        NA 0.7634225        NA 0.6209309        NA 0.4784393        NA 0.3359477 0.1934561        NA        NA        NA

[[1]]$split.box$x2
 [1] 0.05545574         NA 0.22125616         NA 0.37523766         NA 0.56965230         NA 0.79393754 0.70217314         NA         NA         NA

[[1]]$split.box$y2
 [1] 0.9305166        NA 0.7880250        NA 0.6455334        NA 0.5030418        NA 0.3605502 0.2180586        NA        NA        NA



[[2]]
[[2]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 1030 0 (0.861148558 0.138851442)  
   2) star_name_na=!NA 6638  302 0 (0.954504369 0.045495631)  
     4) orbital_period_na=!NA 6083   55 0 (0.990958409 0.009041591) *
     5) orbital_period_na=NA 555  247 0 (0.554954955 0.445045045)  
      10) star_sp_type_na=NA 262   10 0 (0.961832061 0.038167939) *
      11) star_sp_type_na=!NA 293   56 1 (0.191126280 0.808873720) *
   3) star_name_na=NA 780   52 1 (0.066666667 0.933333333) *

[[2]]$snipped.nodes
NULL

[[2]]$xlim
[1] 0 1

[[2]]$ylim
[1] 0 1

[[2]]$x
[1] 0.63688420 0.30419029 0.08239435 0.52598623 0.37812227 0.67385019 0.96957811

[[2]]$y
[1] 0.92779006 0.66029712 0.04506335 0.39280417 0.04506335 0.04506335 0.04506335

[[2]]$branch.x
       [,1]      [,2]       [,3]      [,4]      [,5]      [,6]      [,7]
x 0.6368842 0.3041903 0.08239435 0.5259862 0.3781223 0.6738502 0.9695781
         NA 0.3041903 0.08239435 0.5259862 0.3781223 0.6738502 0.9695781
         NA 0.6368842 0.30419029 0.3041903 0.5259862 0.5259862 0.6368842

[[2]]$branch.y
      [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
y 1.003443 0.7359498 0.1207160 0.4684568 0.1207160 0.1207160 0.1207160
        NA 0.9788402 0.7113473 0.7113473 0.4438543 0.4438543 0.9788402
        NA 0.9788402 0.7113473 0.7113473 0.4438543 0.4438543 0.9788402

[[2]]$labs
[1] "0\n\n6388  1030\n100%" "0\n\n6336  302\n89%"   "0\n\n6028  55\n82%"    "0\n\n308  247\n7%"     "0\n\n252  10\n4%"      "1\n\n56  237\n4%"     
[7] "1\n\n52  728\n11%"    

[[2]]$cex
[1] 0.625

[[2]]$boxes
[[2]]$boxes$x1
[1] 0.6259984 0.2933044 0.0715085 0.5151004 0.3672364 0.6629643 0.9586923

[[2]]$boxes$y1
[1] 0.95423774 0.68674479 0.07151102 0.41925185 0.07151102 0.07151102 0.07151102

[[2]]$boxes$x2
[1] 0.64777004 0.31507613 0.09328019 0.53687207 0.38900811 0.68473603 0.98046395

[[2]]$boxes$y2
[1] 1.0034427 0.7359498 0.1207160 0.4684568 0.1207160 0.1207160 0.1207160


[[2]]$split.labs
[1] ""

[[2]]$split.cex
[1] 1 1 1 1 1 1 1

[[2]]$split.box
[[2]]$split.box$x1
[1]  0.22562560 -0.01047745          NA  0.29271505          NA          NA          NA

[[2]]$split.box$y1
[1] 0.8136345 0.5461416        NA 0.2786486        NA        NA        NA

[[2]]$split.box$x2
[1] 0.3827550 0.1752661        NA 0.4635295        NA        NA        NA

[[2]]$split.box$y2
[1] 0.8628395 0.5953465        NA 0.3278536        NA        NA        NA



[[3]]
[[3]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 1266 0 (0.829334052 0.170665948)  
   2) mass_sini_na=NA 6011  138 0 (0.977042090 0.022957910)  
     4) omega_na=NA 5264   27 0 (0.994870821 0.005129179) *
     5) omega_na=!NA 747  111 0 (0.851405622 0.148594378)  
      10) radius_na=!NA 598   16 0 (0.973244147 0.026755853) *
      11) radius_na=NA 149   54 1 (0.362416107 0.637583893)  
        22) k_na=NA 59   13 0 (0.779661017 0.220338983) *
        23) k_na=!NA 90    8 1 (0.088888889 0.911111111) *
   3) mass_sini_na=!NA 1407  279 1 (0.198294243 0.801705757)  
     6) impact_parameter_na=!NA 115    6 0 (0.947826087 0.052173913) *
     7) impact_parameter_na=NA 1292  170 1 (0.131578947 0.868421053)  
      14) eccentricity_na=NA 132   47 0 (0.643939394 0.356060606)  
        28) k_na=NA 89   12 0 (0.865168539 0.134831461) *
        29) k_na=!NA 43    8 1 (0.186046512 0.813953488) *
      15) eccentricity_na=!NA 1160   85 1 (0.073275862 0.926724138)  
        30) mag_v_na=NA 117   38 1 (0.324786325 0.675213675)  
          60) k_na=NA 45    9 0 (0.800000000 0.200000000) *
          61) k_na=!NA 72    2 1 (0.027777778 0.972222222) *
        31) mag_v_na=!NA 1043   47 1 (0.045062320 0.954937680) *

[[3]]$snipped.nodes
NULL

[[3]]$xlim
[1] 0 1

[[3]]$ylim
[1] 0 1

[[3]]$x
 [1] 0.36568827 0.12518313 0.03293459 0.21743168 0.13836150 0.29650186 0.24378841 0.34921532 0.60619342 0.45464223 0.75774460 0.61278260 0.56006914 0.66549605
[15] 0.90270660 0.82363642 0.77092296 0.87634987 0.98177679

[[3]]$y
 [1] 0.95519506 0.78655791 0.02769075 0.61792077 0.02769075 0.44928362 0.02769075 0.02769075 0.78655791 0.02769075 0.61792077 0.44928362 0.02769075 0.02769075
[15] 0.44928362 0.28064647 0.02769075 0.02769075 0.02769075

[[3]]$branch.x
       [,1]      [,2]       [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.3656883 0.1251831 0.03293459 0.2174317 0.1383615 0.2965019 0.2437884 0.3492153 0.6061934 0.4546422 0.7577446 0.6127826 0.5600691 0.6654961 0.9027066
         NA 0.1251831 0.03293459 0.2174317 0.1383615 0.2965019 0.2437884 0.3492153 0.6061934 0.4546422 0.7577446 0.6127826 0.5600691 0.6654961 0.9027066
         NA 0.3656883 0.12518313 0.1251831 0.2174317 0.2174317 0.2965019 0.2965019 0.3656883 0.6061934 0.6061934 0.7577446 0.6127826 0.6127826 0.7577446
      [,16]     [,17]     [,18]     [,19]
x 0.8236364 0.7709230 0.8763499 0.9817768
  0.8236364 0.7709230 0.8763499 0.9817768
  0.9027066 0.8236364 0.8236364 0.9027066

[[3]]$branch.y
       [,1]      [,2]       [,3]      [,4]       [,5]      [,6]       [,7]       [,8]      [,9]      [,10]     [,11]     [,12]      [,13]      [,14]     [,15]
y 0.9998117 0.8311745 0.07230737 0.6625374 0.07230737 0.4939002 0.07230737 0.07230737 0.8311745 0.07230737 0.6625374 0.4939002 0.07230737 0.07230737 0.4939002
         NA 0.9850502 0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.47913874 0.9850502 0.81641303 0.8164130 0.6477759 0.47913874 0.47913874 0.6477759
         NA 0.9850502 0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.47913874 0.9850502 0.81641303 0.8164130 0.6477759 0.47913874 0.47913874 0.6477759
      [,16]      [,17]      [,18]      [,19]
y 0.3252631 0.07230737 0.07230737 0.07230737
  0.4791387 0.31050160 0.31050160 0.47913874
  0.4791387 0.31050160 0.31050160 0.47913874

[[3]]$labs
 [1] "0\n\n6152  1266\n100%" "0\n\n5873  138\n81%"   "0\n\n5237  27\n71%"    "0\n\n636  111\n10%"    "0\n\n582  16\n8%"      "1\n\n54  95\n2%"      
 [7] "0\n\n46  13\n1%"       "1\n\n8  82\n1%"        "1\n\n279  1128\n19%"   "0\n\n109  6\n2%"       "1\n\n170  1122\n17%"   "0\n\n85  47\n2%"      
[13] "0\n\n77  12\n1%"       "1\n\n8  35\n1%"        "1\n\n85  1075\n16%"    "1\n\n38  79\n2%"       "0\n\n36  9\n1%"        "1\n\n2  70\n1%"       
[19] "1\n\n47  996\n14%"    

[[3]]$cex
[1] 0.3625

[[3]]$boxes
[[3]]$boxes$x1
 [1] 0.35977882 0.11927368 0.02702513 0.21152222 0.13245204 0.29059241 0.23787895 0.34330586 0.60028396 0.44873277 0.75183514 0.60687314 0.55415968 0.65958659
[15] 0.89679714 0.81772696 0.76501351 0.87044042 0.97586733

[[3]]$boxes$y1
 [1] 0.97028869 0.80165154 0.04278438 0.63301439 0.04278438 0.46437725 0.04278438 0.04278438 0.80165154 0.04278438 0.63301439 0.46437725 0.04278438 0.04278438
[15] 0.46437725 0.29574010 0.04278438 0.04278438 0.04278438

[[3]]$boxes$x2
 [1] 0.37159773 0.13109259 0.03884404 0.22334114 0.14427096 0.30241132 0.24969787 0.35512478 0.61210287 0.46055169 0.76365406 0.61869205 0.56597860 0.67140551
[15] 0.90861606 0.82954588 0.77683242 0.88225933 0.98768624

[[3]]$boxes$y2
 [1] 0.99981168 0.83117453 0.07230737 0.66253738 0.07230737 0.49390024 0.07230737 0.07230737 0.83117453 0.07230737 0.66253738 0.49390024 0.07230737 0.07230737
[15] 0.49390024 0.32526309 0.07230737 0.07230737 0.07230737


[[3]]$split.labs
[1] ""

[[3]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[3]]$split.box
[[3]]$split.box$x1
 [1]  0.083630315 -0.001775702           NA  0.103340185           NA  0.221208060           NA           NA  0.394116942           NA  0.567186465  0.537488792
[13]           NA           NA  0.789237154  0.748342614           NA           NA           NA

[[3]]$split.box$y1
 [1] 0.8867017 0.7180646        NA 0.5494274        NA 0.3807903        NA        NA 0.7180646        NA 0.5494274 0.3807903        NA        NA 0.3807903
[16] 0.2121531        NA        NA        NA

[[3]]$split.box$x2
 [1] 0.16673595 0.06764488         NA 0.17338281         NA 0.26636876         NA         NA 0.51516752         NA 0.65837873 0.58264949         NA         NA
[15] 0.85803568 0.79350331         NA         NA         NA

[[3]]$split.box$y2
 [1] 0.9162247 0.7475876        NA 0.5789504        NA 0.4103133        NA        NA 0.7475876        NA 0.5789504 0.4103133        NA        NA 0.4103133
[16] 0.2416761        NA        NA        NA



[[4]]
[[4]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 7418 19 0 (0.997438663 0.002561337) *

[[4]]$snipped.nodes
NULL

[[4]]$xlim
[1] 0 1

[[4]]$ylim
[1] 0 1

[[4]]$x
[1] 0.5

[[4]]$y
[1] 0.5

[[4]]$branch.x
  [,1]
x  0.5
    NA
    NA

[[4]]$branch.y
  [,1]
y  0.5
    NA
    NA

[[4]]$labs
[1] "0\n\n7399  19\n100%"

[[4]]$cex
[1] 1

[[4]]$boxes
[[4]]$boxes$x1
[1] 0.4819606

[[4]]$boxes$y1
[1] 0.5429313

[[4]]$boxes$x2
[1] 0.5180394

[[4]]$boxes$y2
[1] 0.6191991


[[4]]$split.labs
[1] ""

[[4]]$split.cex
[1] 1

[[4]]$split.box
[[4]]$split.box$x1
[1] NA

[[4]]$split.box$y1
[1] NA

[[4]]$split.box$x2
[1] NA

[[4]]$split.box$y2
[1] NA



[[5]]
[[5]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 7418 101 0 (0.98638447 0.01361553) *

[[5]]$snipped.nodes
NULL

[[5]]$xlim
[1] 0 1

[[5]]$ylim
[1] 0 1

[[5]]$x
[1] 0.5

[[5]]$y
[1] 0.5

[[5]]$branch.x
  [,1]
x  0.5
    NA
    NA

[[5]]$branch.y
  [,1]
y  0.5
    NA
    NA

[[5]]$labs
[1] "0\n\n7317  101\n100%"

[[5]]$cex
[1] 1

[[5]]$boxes
[[5]]$boxes$x1
[1] 0.4819606

[[5]]$boxes$y1
[1] 0.5429313

[[5]]$boxes$x2
[1] 0.5180394

[[5]]$boxes$y2
[1] 0.6191991


[[5]]$split.labs
[1] ""

[[5]]$split.cex
[1] 1

[[5]]$split.box
[[5]]$split.box$x1
[1] NA

[[5]]$split.box$y1
[1] NA

[[5]]$split.box$x2
[1] NA

[[5]]$split.box$y2
[1] NA



[[6]]
[[6]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 7418 2890 1 (0.38959288 0.61040712)  
  2) radius_na=NA 2444   43 0 (0.98240589 0.01759411) *
  3) radius_na=!NA 4974  489 1 (0.09831122 0.90168878)  
    6) orbital_period_na=NA 347   10 0 (0.97118156 0.02881844) *
    7) orbital_period_na=!NA 4627  152 1 (0.03285066 0.96714934) *

[[6]]$snipped.nodes
NULL

[[6]]$xlim
[1] 0 1

[[6]]$ylim
[1] 0 1

[[6]]$x
[1] 0.40180232 0.07651351 0.72709114 0.51023193 0.94395035

[[6]]$y
[1] 0.90176222 0.06208606 0.52009124 0.06208606 0.06208606

[[6]]$branch.x
       [,1]       [,2]      [,3]      [,4]      [,5]
x 0.4018023 0.07651351 0.7270911 0.5102319 0.9439503
         NA 0.07651351 0.7270911 0.5102319 0.9439503
         NA 0.40180232 0.4018023 0.7270911 0.7270911

[[6]]$branch.y
      [,1]      [,2]      [,3]      [,4]      [,5]
y 1.010146 0.1704700 0.6284752 0.1704700 0.1704700
        NA 0.9757027 0.9757027 0.5940317 0.5940317
        NA 0.9757027 0.9757027 0.5940317 0.5940317

[[6]]$labs
[1] "1\n\n2890  4528\n100%" "0\n\n2401  43\n33%"    "1\n\n489  4485\n67%"   "0\n\n337  10\n5%"      "1\n\n152  4475\n62%"  

[[6]]$cex
[1] 0.9148437

[[6]]$boxes
[[6]]$boxes$x1
[1] 0.38562907 0.06034026 0.71091788 0.49405868 0.92777709

[[6]]$boxes$y1
[1] 0.9412592 0.1015830 0.5595882 0.1015830 0.1015830

[[6]]$boxes$x2
[1] 0.41797558 0.09268676 0.74326439 0.52640518 0.96012360

[[6]]$boxes$y2
[1] 1.0101462 0.1704700 0.6284752 0.1704700 0.1704700


[[6]]$split.labs
[1] ""

[[6]]$split.cex
[1] 1 1 1 1 1

[[6]]$split.box
[[6]]$split.box$x1
[1] -0.01169292          NA  0.37848212          NA          NA

[[6]]$split.box$y1
[1] 0.7419444        NA 0.3602735        NA        NA

[[6]]$split.box$x2
[1] 0.1647199        NA 0.6419817        NA        NA

[[6]]$split.box$y2
[1] 0.8108314        NA 0.4291604        NA        NA



[[7]]
[[7]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

  1) root 7418 313 0 (0.957805338 0.042194662)  
    2) orbital_period_na=!NA 6125   8 0 (0.998693878 0.001306122) *
    3) orbital_period_na=NA 1293 305 0 (0.764114462 0.235885538)  
      6) alternate_names_na=!NA 771  38 0 (0.950713359 0.049286641)  
       12) star_name_na=NA 562   2 0 (0.996441281 0.003558719) *
       13) star_name_na=!NA 209  36 0 (0.827751196 0.172248804)  
         26) star_sp_type_na=!NA 171   4 0 (0.976608187 0.023391813) *
         27) star_sp_type_na=NA 38   6 1 (0.157894737 0.842105263) *
      7) alternate_names_na=NA 522 255 1 (0.488505747 0.511494253)  
       14) semi_major_axis_na=NA 184  31 0 (0.831521739 0.168478261)  
         28) star_distance_NA=!NA 172  23 0 (0.866279070 0.133720930)  
           56) star_mass_na=NA 161  15 0 (0.906832298 0.093167702) *
           57) star_mass_na=!NA 11   3 1 (0.272727273 0.727272727) *
         29) star_distance_NA=NA 12   4 1 (0.333333333 0.666666667) *
       15) semi_major_axis_na=!NA 338 102 1 (0.301775148 0.698224852)  
         30) star_sp_type_na=!NA 113  21 0 (0.814159292 0.185840708)  
           60) mag_v_na=!NA 70   1 0 (0.985714286 0.014285714) *
           61) mag_v_na=NA 43  20 0 (0.534883721 0.465116279)  
            122) mag_k_na=!NA 11   0 0 (1.000000000 0.000000000) *
            123) mag_k_na=NA 32  12 1 (0.375000000 0.625000000) *
         31) star_sp_type_na=NA 225  10 1 (0.044444444 0.955555556) *

[[7]]$snipped.nodes
NULL

[[7]]$xlim
[1] 0 1

[[7]]$ylim
[1] 0 1

[[7]]$x
 [1] 0.24764414 0.03939514 0.45589314 0.20481278 0.13391951 0.27570606 0.22844388 0.32296825 0.70697350 0.53564808 0.46475480 0.41749262 0.51201699 0.60654136
[15] 0.87829892 0.77195900 0.70106573 0.84285228 0.79559010 0.89011447 0.98463884

[[7]]$y
 [1] 0.96299192 0.02254728 0.82050031 0.67800870 0.02254728 0.53551708 0.02254728 0.02254728 0.67800870 0.53551708 0.39302547 0.02254728 0.02254728 0.02254728
[15] 0.53551708 0.39302547 0.02254728 0.25053386 0.02254728 0.02254728 0.02254728

[[7]]$branch.x
       [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.2476441 0.03939514 0.4558931 0.2048128 0.1339195 0.2757061 0.2284439 0.3229682 0.7069735 0.5356481 0.4647548 0.4174926 0.5120170 0.6065414 0.8782989
         NA 0.03939514 0.4558931 0.2048128 0.1339195 0.2757061 0.2284439 0.3229682 0.7069735 0.5356481 0.4647548 0.4174926 0.5120170 0.6065414 0.8782989
         NA 0.24764414 0.2476441 0.4558931 0.2048128 0.2048128 0.2757061 0.2757061 0.4558931 0.7069735 0.5356481 0.4647548 0.4647548 0.5356481 0.7069735
      [,16]     [,17]     [,18]     [,19]     [,20]     [,21]
x 0.7719590 0.7010657 0.8428523 0.7955901 0.8901145 0.9846388
  0.7719590 0.7010657 0.8428523 0.7955901 0.8901145 0.9846388
  0.8782989 0.7719590 0.7719590 0.8428523 0.8428523 0.8782989

[[7]]$branch.y
       [,1]       [,2]      [,3]      [,4]       [,5]      [,6]       [,7]       [,8]      [,9]     [,10]     [,11]      [,12]      [,13]      [,14]     [,15]
y 0.9992683 0.05882365 0.8567767 0.7142851 0.05882365 0.5717935 0.05882365 0.05882365 0.7142851 0.5717935 0.4293018 0.05882365 0.05882365 0.05882365 0.5717935
         NA 0.98696705 0.9869670 0.8444754 0.70198382 0.7019838 0.55949221 0.55949221 0.8444754 0.7019838 0.5594922 0.41700060 0.41700060 0.55949221 0.7019838
         NA 0.98696705 0.9869670 0.8444754 0.70198382 0.7019838 0.55949221 0.55949221 0.8444754 0.7019838 0.5594922 0.41700060 0.41700060 0.55949221 0.7019838
      [,16]      [,17]     [,18]      [,19]      [,20]      [,21]
y 0.4293018 0.05882365 0.2868102 0.05882365 0.05882365 0.05882365
  0.5594922 0.41700060 0.4170006 0.27450899 0.27450899 0.55949221
  0.5594922 0.41700060 0.4170006 0.27450899 0.27450899 0.55949221

[[7]]$labs
 [1] "0\n\n7105  313\n100%" "0\n\n6117  8\n83%"    "0\n\n988  305\n17%"   "0\n\n733  38\n10%"    "0\n\n560  2\n8%"      "0\n\n173  36\n3%"    
 [7] "0\n\n167  4\n2%"      "1\n\n6  32\n1%"       "1\n\n255  267\n7%"    "0\n\n153  31\n2%"     "0\n\n149  23\n2%"     "0\n\n146  15\n2%"    
[13] "1\n\n3  8\n0%"        "1\n\n4  8\n0%"        "1\n\n102  236\n5%"    "0\n\n92  21\n2%"      "0\n\n69  1\n1%"       "0\n\n23  20\n1%"     
[19] "0\n\n11  0\n0%"       "1\n\n12  20\n0%"      "1\n\n10  215\n3%"    

[[7]]$cex
[1] 0.2875

[[7]]$boxes
[[7]]$boxes$x1
 [1] 0.24266775 0.03441875 0.45091676 0.19983640 0.12894312 0.27072968 0.22346749 0.31799186 0.70199711 0.53067169 0.45977842 0.41251623 0.50704060 0.60156497
[15] 0.87332253 0.76698262 0.69608934 0.83787590 0.79061371 0.88513808 0.97966245

[[7]]$boxes$y1
 [1] 0.97466580 0.03422116 0.83217419 0.68968258 0.03422116 0.54719097 0.03422116 0.03422116 0.68968258 0.54719097 0.40469935 0.03422116 0.03422116 0.03422116
[15] 0.54719097 0.40469935 0.03422116 0.26220774 0.03422116 0.03422116 0.03422116

[[7]]$boxes$x2
 [1] 0.25262053 0.04437152 0.46086953 0.20978917 0.13889589 0.28068245 0.23342026 0.32794463 0.71194989 0.54062446 0.46973119 0.42246900 0.51699337 0.61151774
[15] 0.88327531 0.77693539 0.70604211 0.84782867 0.80056648 0.89509085 0.98961522

[[7]]$boxes$y2
 [1] 0.99926829 0.05882365 0.85677668 0.71428507 0.05882365 0.57179346 0.05882365 0.05882365 0.71428507 0.57179346 0.42930184 0.05882365 0.05882365 0.05882365
[15] 0.57179346 0.42930184 0.05882365 0.28681023 0.05882365 0.05882365 0.05882365


[[7]]$split.labs
[1] ""

[[7]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[7]]$split.box
[[7]]$split.box$x1
 [1] -0.002282091           NA  0.157537123  0.098462761           NA  0.188010745           NA           NA  0.488683441  0.422455525  0.382035870           NA
[13]           NA           NA  0.731525872  0.672140486           NA  0.766353832           NA           NA           NA

[[7]]$split.box$y1
 [1] 0.9059141        NA 0.7634225 0.6209309        NA 0.4784393        NA        NA 0.6209309 0.4784393 0.3359477        NA        NA        NA 0.4784393
[16] 0.3359477        NA 0.1934561        NA        NA        NA

[[7]]$split.box$x2
 [1] 0.08107237         NA 0.25208845 0.16937625         NA 0.26887701         NA         NA 0.58261272 0.50705408 0.45294936         NA         NA         NA
[15] 0.81239214 0.72999097         NA 0.82482636         NA         NA         NA

[[7]]$split.box$y2
 [1] 0.9305166        NA 0.7880250 0.6455334        NA 0.5030418        NA        NA 0.6455334 0.5030418 0.3605502        NA        NA        NA 0.5030418
[16] 0.3605502        NA 0.2180586        NA        NA        NA



[[8]]
[[8]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 7418 34 0 (0.995416554 0.004583446)  
   2) mass_measurement_type_na=NA 4320  6 0 (0.998611111 0.001388889) *
   3) mass_measurement_type_na=!NA 3098 28 0 (0.990961911 0.009038089)  
     6) mag_h_na=NA 2403  7 0 (0.997086975 0.002913025) *
     7) mag_h_na=!NA 695 21 0 (0.969784173 0.030215827)  
      14) semi_major_axis_na=!NA 638 11 0 (0.982758621 0.017241379) *
      15) semi_major_axis_na=NA 57 10 0 (0.824561404 0.175438596)  
        30) tconj_na=!NA 31  0 0 (1.000000000 0.000000000) *
        31) tconj_na=NA 26 10 0 (0.615384615 0.384615385)  
          62) star_sp_type_na=!NA 15  3 0 (0.800000000 0.200000000) *
          63) star_sp_type_na=NA 11  4 1 (0.363636364 0.636363636) *

[[8]]$snipped.nodes
NULL

[[8]]$xlim
[1] 0 1

[[8]]$ylim
[1] 0 1

[[8]]$x
 [1] 0.24761363 0.06940282 0.42582443 0.25336236 0.59828649 0.43732190 0.75925109 0.62128143 0.89722074 0.80524097 0.98920051

[[8]]$y
 [1] 0.95519506 0.02769075 0.78655791 0.02769075 0.61792077 0.02769075 0.44928362 0.02769075 0.28064647 0.02769075 0.02769075

[[8]]$branch.x
       [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]
x 0.2476136 0.06940282 0.4258244 0.2533624 0.5982865 0.4373219 0.7592511 0.6212814 0.8972207 0.8052410 0.9892005
         NA 0.06940282 0.4258244 0.2533624 0.5982865 0.4373219 0.7592511 0.6212814 0.8972207 0.8052410 0.9892005
         NA 0.24761363 0.2476136 0.4258244 0.4258244 0.5982865 0.5982865 0.7592511 0.7592511 0.8972207 0.8972207

[[8]]$branch.y
       [,1]       [,2]      [,3]       [,4]      [,5]       [,6]      [,7]       [,8]      [,9]      [,10]      [,11]
y 0.9998117 0.07230737 0.8311745 0.07230737 0.6625374 0.07230737 0.4939002 0.07230737 0.3252631 0.07230737 0.07230737
         NA 0.98505018 0.9850502 0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160
         NA 0.98505018 0.9850502 0.81641303 0.8164130 0.64777589 0.6477759 0.47913874 0.4791387 0.31050160 0.31050160

[[8]]$labs
 [1] "0\n\n7384  34\n100%" "0\n\n4314  6\n58%"   "0\n\n3070  28\n42%"  "0\n\n2396  7\n32%"   "0\n\n674  21\n9%"    "0\n\n627  11\n9%"    "0\n\n47  10\n1%"    
 [8] "0\n\n31  0\n0%"      "0\n\n16  10\n0%"     "0\n\n12  3\n0%"      "1\n\n4  7\n0%"      

[[8]]$cex
[1] 0.3625

[[8]]$boxes
[[8]]$boxes$x1
 [1] 0.24170417 0.06349337 0.41991497 0.24745290 0.59237703 0.43141244 0.75334163 0.61537198 0.89131128 0.79933151 0.98329105

[[8]]$boxes$y1
 [1] 0.97028869 0.04278438 0.80165154 0.04278438 0.63301439 0.04278438 0.46437725 0.04278438 0.29574010 0.04278438 0.04278438

[[8]]$boxes$x2
 [1] 0.25352308 0.07531228 0.43173388 0.25927182 0.60419595 0.44323136 0.76516055 0.62719089 0.90313020 0.81115043 0.99510997

[[8]]$boxes$y2
 [1] 0.99981168 0.07230737 0.83117453 0.07230737 0.66253738 0.07230737 0.49390024 0.07230737 0.32526309 0.07230737 0.07230737


[[8]]$split.labs
[1] ""

[[8]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1

[[8]]$split.box
[[8]]$split.box$x1
 [1] -0.006051621           NA  0.218963096           NA  0.379906850           NA  0.589059339           NA  0.755912550           NA           NA

[[8]]$split.box$y1
 [1] 0.8867017        NA 0.7180646        NA 0.5494274        NA 0.3807903        NA 0.2121531        NA        NA

[[8]]$split.box$x2
 [1] 0.1448573        NA 0.2877616        NA 0.4947369        NA 0.6535035        NA 0.8545694        NA        NA

[[8]]$split.box$y2
 [1] 0.9162247        NA 0.7475876        NA 0.5789504        NA 0.4103133        NA 0.2416761        NA        NA



[[9]]
[[9]]$obj
n= 7418 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

  1) root 7418 178 0 (0.976004314 0.023995686)  
    2) star_metallicity_na=!NA 5233  14 0 (0.997324670 0.002675330) *
    3) star_metallicity_na=NA 2185 164 0 (0.924942792 0.075057208)  
      6) mass_sini_na=NA 1873  53 0 (0.971703150 0.028296850)  
       12) star_sp_type_na=NA 1348   5 0 (0.996290801 0.003709199) *
       13) star_sp_type_na=!NA 525  48 0 (0.908571429 0.091428571)  
         26) star_teff_na=!NA 367  15 0 (0.959128065 0.040871935) *
         27) star_teff_na=NA 158  33 0 (0.791139241 0.208860759)  
           54) orbital_period_na=NA 87   1 0 (0.988505747 0.011494253) *
           55) orbital_period_na=!NA 71  32 0 (0.549295775 0.450704225)  
            110) mass_measurement_type_na=!NA 36   8 0 (0.777777778 0.222222222) *
            111) mass_measurement_type_na=NA 35  11 1 (0.314285714 0.685714286)  
              222) alternate_names_na=!NA 10   4 0 (0.600000000 0.400000000) *
              223) alternate_names_na=NA 25   5 1 (0.200000000 0.800000000) *
      7) mass_sini_na=!NA 312 111 0 (0.644230769 0.355769231)  
       14) k_na=!NA 157   3 0 (0.980891720 0.019108280) *
       15) k_na=NA 155  47 1 (0.303225806 0.696774194)  
         30) mag_v_na=!NA 60  24 0 (0.600000000 0.400000000)  
           60) angular_distance_na=!NA 15   0 0 (1.000000000 0.000000000) *
           61) angular_distance_na=NA 45  21 1 (0.466666667 0.533333333)  
            122) star_mass_na=NA 11   3 0 (0.727272727 0.272727273) *
            123) star_mass_na=!NA 34  13 1 (0.382352941 0.617647059) *
         31) mag_v_na=NA 95  11 1 (0.115789474 0.884210526) *

[[9]]$snipped.nodes
NULL

[[9]]$xlim
[1] 0 1

[[9]]$ylim
[1] 0 1

[[9]]$x
 [1] 0.26411819 0.03982084 0.48841554 0.20955937 0.12603724 0.29308151 0.21225364 0.37390939 0.29847004 0.44934873 0.38468644 0.51401103 0.47090283 0.55711923
[15] 0.76727171 0.64333563 0.89120778 0.79421433 0.72955203 0.85887663 0.81576843 0.90198483 0.98820123

[[9]]$y
 [1] 0.96628805 0.02062501 0.84347467 0.72066129 0.02062501 0.59784791 0.02062501 0.47503452 0.02062501 0.35222114 0.02062501 0.22940776 0.02062501 0.02062501
[15] 0.72066129 0.02062501 0.59784791 0.47503452 0.02062501 0.35222114 0.02062501 0.02062501 0.02062501

[[9]]$branch.x
       [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]     [,15]
x 0.2641182 0.03982084 0.4884155 0.2095594 0.1260372 0.2930815 0.2122536 0.3739094 0.2984700 0.4493487 0.3846864 0.5140110 0.4709028 0.5571192 0.7672717
         NA 0.03982084 0.4884155 0.2095594 0.1260372 0.2930815 0.2122536 0.3739094 0.2984700 0.4493487 0.3846864 0.5140110 0.4709028 0.5571192 0.7672717
         NA 0.26411819 0.2641182 0.4884155 0.2095594 0.2095594 0.2930815 0.2930815 0.3739094 0.3739094 0.4493487 0.4493487 0.5140110 0.5140110 0.4884155
      [,16]     [,17]     [,18]     [,19]     [,20]     [,21]     [,22]     [,23]
x 0.6433356 0.8912078 0.7942143 0.7295520 0.8588766 0.8157684 0.9019848 0.9882012
  0.6433356 0.8912078 0.7942143 0.7295520 0.8588766 0.8157684 0.9019848 0.9882012
  0.7672717 0.7672717 0.8912078 0.7942143 0.7942143 0.8588766 0.8588766 0.8912078

[[9]]$branch.y
       [,1]       [,2]      [,3]      [,4]       [,5]      [,6]       [,7]      [,8]       [,9]     [,10]      [,11]     [,12]      [,13]      [,14]     [,15]
y 0.9991693 0.05350624 0.8763559 0.7535425 0.05350624 0.6307291 0.05350624 0.5079158 0.05350624 0.3851024 0.05350624 0.2622890 0.05350624 0.05350624 0.7535425
         NA 0.98809816 0.9880982 0.8652848 0.74247139 0.7424714 0.61965801 0.6196580 0.49684463 0.4968446 0.37403125 0.3740313 0.25121787 0.25121787 0.8652848
         NA 0.98809816 0.9880982 0.8652848 0.74247139 0.7424714 0.61965801 0.6196580 0.49684463 0.4968446 0.37403125 0.3740313 0.25121787 0.25121787 0.8652848
       [,16]     [,17]     [,18]      [,19]     [,20]      [,21]      [,22]      [,23]
y 0.05350624 0.6307291 0.5079158 0.05350624 0.3851024 0.05350624 0.05350624 0.05350624
  0.74247139 0.7424714 0.6196580 0.49684463 0.4968446 0.37403125 0.37403125 0.61965801
  0.74247139 0.7424714 0.6196580 0.49684463 0.4968446 0.37403125 0.37403125 0.61965801

[[9]]$labs
 [1] "0\n\n7240  178\n100%" "0\n\n5219  14\n71%"   "0\n\n2021  164\n29%"  "0\n\n1820  53\n25%"   "0\n\n1343  5\n18%"    "0\n\n477  48\n7%"    
 [7] "0\n\n352  15\n5%"     "0\n\n125  33\n2%"     "0\n\n86  1\n1%"       "0\n\n39  32\n1%"      "0\n\n28  8\n0%"       "1\n\n11  24\n0%"     
[13] "0\n\n6  4\n0%"        "1\n\n5  20\n0%"       "0\n\n201  111\n4%"    "0\n\n154  3\n2%"      "1\n\n47  108\n2%"     "0\n\n36  24\n1%"     
[19] "0\n\n15  0\n0%"       "1\n\n21  24\n1%"      "0\n\n8  3\n0%"        "1\n\n13  21\n0%"      "1\n\n11  84\n1%"     

[[9]]$cex
[1] 0.2625

[[9]]$boxes
[[9]]$boxes$x1
 [1] 0.2597639 0.0354665 0.4840612 0.2052050 0.1216829 0.2887272 0.2078993 0.3695550 0.2941157 0.4449944 0.3803321 0.5096567 0.4665485 0.5527649 0.7629174
[16] 0.6389813 0.8868534 0.7898600 0.7251977 0.8545223 0.8114141 0.8976305 0.9838469

[[9]]$boxes$y1
 [1] 0.9770270 0.0313640 0.8542137 0.7314003 0.0313640 0.6085869 0.0313640 0.4857735 0.0313640 0.3629601 0.0313640 0.2401467 0.0313640 0.0313640 0.7314003
[16] 0.0313640 0.6085869 0.4857735 0.0313640 0.3629601 0.0313640 0.0313640 0.0313640

[[9]]$boxes$x2
 [1] 0.26847253 0.04417517 0.49276988 0.21391371 0.13039157 0.29743585 0.21660797 0.37826372 0.30282437 0.45370307 0.38904077 0.51836537 0.47525717 0.56147357
[15] 0.77162605 0.64768997 0.89556212 0.79856867 0.73390637 0.86323097 0.82012277 0.90633917 0.99255557

[[9]]$boxes$y2
 [1] 0.99916928 0.05350624 0.87635590 0.75354252 0.05350624 0.63072913 0.05350624 0.50791575 0.05350624 0.38510237 0.05350624 0.26228899 0.05350624 0.05350624
[15] 0.75354252 0.05350624 0.63072913 0.50791575 0.05350624 0.38510237 0.05350624 0.05350624 0.05350624


[[9]]$split.labs
[1] ""

[[9]]$split.cex
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[[9]]$split.box
[[9]]$split.box$x1
 [1] -0.002167417           NA  0.176901843  0.088714344           NA  0.181773274           NA  0.259592024           NA  0.323414689           NA  0.426115365
[13]           NA           NA  0.625296237           NA  0.767155238  0.684453541           NA  0.782488856           NA           NA           NA

[[9]]$split.box$y1
 [1] 0.9149181        NA 0.7921047 0.6692913        NA 0.5464779        NA 0.4236645        NA 0.3008511        NA 0.1780378        NA        NA 0.6692913
[16]        NA 0.5464779 0.4236645        NA 0.3008511        NA        NA        NA

[[9]]$split.box$x2
 [1] 0.08180909         NA 0.24221690 0.16336013         NA 0.24273400         NA 0.33734805         NA 0.44595818         NA 0.51569030         NA         NA
[15] 0.66137503         NA 0.82127343 0.77465053         NA 0.84904801         NA         NA         NA

[[9]]$split.box$y2
 [1] 0.9370603        NA 0.8142469 0.6914335        NA 0.5686201        NA 0.4458068        NA 0.3229934        NA 0.2001800        NA        NA 0.6914335
[16]        NA 0.5686201 0.4458068        NA 0.3229934        NA        NA        NA

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkoaGVyZSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShjb25mbGljdGVkKQ0KIyBsaWJyYXJ5KGVhc3lzdGF0cykNCg0KZXhvcGxhbmV0cyA8LSByZWFkX2NzdihoZXJlKCJkYXRhIiwgImV4b3BsYW5ldF9jYXRhbG9nXzA4MDMyNS5jc3YiKSkNCmV4b3BsYW5ldHMNCmBgYA0KDQoNCmBgYHtyfQ0KbGlicmFyeShza2ltcikNCnNraW0oZXhvcGxhbmV0cykNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeW1vZGVscykNCmdsaW1wc2UoZXhvcGxhbmV0cykNCmBgYA0KDQoNCg0KYGBge3IsZmlnLmFzcD0yfQ0KbGlicmFyeShuYW5pYXIpDQpnZ19taXNzX3ZhcihleG9wbGFuZXRzKQ0KYGBgDQoNCg0KYGBge3IsIGZpZy53aWR0aD0yMCwgZmlnLmhlaWdodD0xMH0NCmxpYnJhcnkodmlzZGF0KQ0KdmlzX2RhdChleG9wbGFuZXRzKQ0KYGBgDQoNCg0KYGBge3J9DQpuYW1lcyhleG9wbGFuZXRzKQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGphbml0b3IpDQpleG9wbGFuZXRzICU+JSB0YWJ5bChwbGFuZXRfc3RhdHVzKQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGRhdGEudGFibGUpDQojIG9wdGlvbnMocmVwci5tYXRyaXgubWF4LnJvd3M9MTAwKQ0KZXhvcGxhbmV0cyAlPiUgDQogIGFkZF9wcm9wX21pc3MoKSAlPiUNCiAgYXJyYW5nZShwcm9wX21pc3NfYWxsKSAlPiUgDQogIGhlYWQoNSkgJT4lIA0KICBkYXRhLnRhYmxlOjp0cmFuc3Bvc2Uoa2VlcC5uYW1lcz0iY29sdW1uIikgLT4gcHJldmlldw0KDQpwcmV2aWV3DQojIHByZXZpZXcgJT4lIFZpZXcoKQ0KYGBgDQoNCldlIGhhdmUgYSBsb3Qgb2YgZmVhdHVyZXM6DQotIFBsYW5ldCBuYW1lDQotIE1hc3MgKE0ganVwKQ0KLSBNYXNzKnNpbihpKSAoTSBqdXApDQogIC0gVGhpcyBkZXNjcmliZXMgbWluaW11bSBtYXNzIG9mIHRoZSBwbGFuZXQgZHVlIHRvIGluY2xpbmF0aW9uIGVmZmVjdA0KLSBSYWRpdXMgKFJqdXApDQotIFBlcmlvZCAoZGF5KQ0KLSBhIC8gdGhlIGF2ZXJhZ2UgZGlzdGFuY2Ugb2YgdGhlIHBsYW5ldCBhbmQgaXRzIHN0YXINCiAgLSBpdCdzIGluIEFVIChhc3Ryb25vbWljYWwgdW5pdHMpLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgZGlzdGFuY2UgdXNlZCBmb3IgdGhlc2UgdHlwZXMgb2YgdGhpbmdzDQogIC0gMSBBVSBpcyB0aGUgYXZlcmFnZSBkaXN0YW5jZSB0d2VlbiB0aGUgZWFydGggYW5kIHRoZSBzdW4NCi0gZSAvIGVjY2VudHJ5IG9mIGEgcGxhbmV0IChiZXR3ZWVuIDAgYW5kIDEpDQogIC0gcmVwcmVzZW5ldHMgaG93IG11Y2ggb2YgYSBjaXJjbGUgaXMgdGhlIG9yYml0DQogIC0gZSA9IDAgbWVhbnMgcGVyZmVjdCBjaXJjbGUsIGUgPiAxIG1lYW5zIGl0cyBub3QgYm91bmQgdG8gdGhlIHN0YXINCi0gRGlzY292ZXJ5IC0geWVhciB3aGVuIGl0IHdhcyBkaXNjb3ZlcmVkDQotIHVwZGF0ZSAtIHllYXIgaXQgd2FzIHVwZGF0ZWQNCi0gDQoNCmBgYHtyfQ0KY29uZmxpY3RzX3ByZWZlcihkcGx5cjo6ZmlsdGVyKQ0KZXhvcGxhbmV0cyAlPiUgDQogIGZpbHRlcihuYW1lICU+JSBzdHJfbGlrZSgiJVRPSS03ODQlIikpDQpgYGANCg0KDQpgYGB7cn0NCmNvbmZsaWN0c19wcmVmZXIoZHBseXI6OmZpbHRlcikNCmV4b3BsYW5ldHMgJT4lIA0KICBmaWx0ZXIoZGlzY292ZXJlZCA9PSAyMDIzKQ0KYGBgDQoNCmBgYHtyfQ0KZXhvcGxhbmV0cyAlPiUNCiAgbXV0YXRlKA0KICAgIHJhX3JhZCA9IHJhLCAgIyBDb252ZXJ0IFJBIHRvIHJhZGlhbnMNCiAgICBkZWNfcmFkID0gZGVjICAjIENvbnZlcnQgRGVjIHRvIHJhZGlhbnMNCiAgKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IHJhX3JhZCwgeSA9IGRlY19yYWQsIGNvbG9yID0gZGVjKSkgKw0KICBnZW9tX3BvaW50KHNpemUgPSAwLjQpICsNCiAgY29vcmRfbWFwKCJhaXRvZmYiKSArICAjIEFwcGx5IEFpdG9mZiBwcm9qZWN0aW9uDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiICAjIE9wdGlvbmFsbHkgcmVtb3ZlIGxlZ2VuZA0KICApDQpgYGANCg0KDQpgYGB7cn0NCiMgY2hlY2sgY29sdW1zbiB0aGF0IHN0YXJ0IHdpdGggc3Rhcg0KZXhvcGxhbmV0cyAlPiUgDQogIHNlbGVjdChzdGFydHNfd2l0aCgic3RhciIpKQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShwbG90bHkpDQpjb25mbGljdHNfcHJlZmVyKHBsb3RseTo6bGF5b3V0KQ0KIyBDcmVhdGUgYSBuZXcgY29sdW1uIHRvIGRpc3Rpbmd1aXNoIEtlcGxlciBleG9wbGFuZXRzDQpleG9wbGFuZXRzXzNkIDwtIGV4b3BsYW5ldHMgJT4lDQogIG11dGF0ZSgNCiAgICByYV9yYWQgPSByYSAqIHBpIC8gMTgwLCAgICMgQ29udmVydCBSQSBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucw0KICAgIGRlY19yYWQgPSBkZWMgKiBwaSAvIDE4MCwgIyBDb252ZXJ0IERlYyBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucw0KICAgIHggPSBjb3MoZGVjX3JhZCkgKiBjb3MocmFfcmFkKSwgIyBDb252ZXJ0IHRvIENhcnRlc2lhbiBjb29yZGluYXRlcw0KICAgIHkgPSBjb3MoZGVjX3JhZCkgKiBzaW4ocmFfcmFkKSwNCiAgICB6ID0gc2luKGRlY19yYWQpLA0KICAgIGNvbG9yID0gY2FzZV93aGVuKCAgIyBDcmVhdGUgYSBjb2x1bW4gZm9yIHJlZCB3aGVuIGtlcGxlciwgYmx1ZSBvdGhlcndpc2UNCiAgICAgIHN0cl9kZXRlY3QocGFzdGUobmFtZSwgYWx0ZXJuYXRlX25hbWVzKSwgcmVnZXgoImtlcGxlcnxrb2kiLCBpZ25vcmVfY2FzZSA9IFRSVUUpKSB+ICJLZXBsZXIiLA0KICAgICAgIyBpZiBpdCdzIGZyZWUgZmxvYXRpbmcgKHN0YXJfbmFtZSBpcyBOQSkNCiAgICAgIHN0YXJfbmFtZSAlPiUgaXMubmEoKSB+ICJGcmVlIEZsb2F0aW5nIiwNCiAgICAgIFRSVUUgfiAiT3RoZXIiDQogICAgKSwNCiAgICBob3Zlcl90ZXh0ID0gcGFzdGUoIk5hbWU6ICIsIG5hbWUpICMgQ3JlYXRlIGN1c3RvbSBob3ZlciB0ZXh0IHdpdGggdGhlIG5hbWUgb2YgdGhlIGV4b3BsYW5ldA0KICApDQoNCiMgRGVmaW5lIHN0ZXBzIGZvciBvcGFjaXR5IHNsaWRlcg0Kc3RlcHMgPC0gbGlzdCgNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjApLCBsYWJlbCA9ICIwLjAiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDAuMSksIGxhYmVsID0gIjAuMSIsIG1ldGhvZCA9ICJyZXN0eWxlIiksDQogIGxpc3QoYXJncyA9IGxpc3QoIm1hcmtlci5vcGFjaXR5IiwgMC4yKSwgbGFiZWwgPSAiMC4yIiwgbWV0aG9kID0gInJlc3R5bGUiKSwNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjMpLCBsYWJlbCA9ICIwLjMiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDAuNCksIGxhYmVsID0gIjAuNCIsIG1ldGhvZCA9ICJyZXN0eWxlIiksDQogIGxpc3QoYXJncyA9IGxpc3QoIm1hcmtlci5vcGFjaXR5IiwgMC41KSwgbGFiZWwgPSAiMC41IiwgbWV0aG9kID0gInJlc3R5bGUiKSwNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjYpLCBsYWJlbCA9ICIwLjYiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDAuNyksIGxhYmVsID0gIjAuNyIsIG1ldGhvZCA9ICJyZXN0eWxlIiksDQogIGxpc3QoYXJncyA9IGxpc3QoIm1hcmtlci5vcGFjaXR5IiwgMC44KSwgbGFiZWwgPSAiMC44IiwgbWV0aG9kID0gInJlc3R5bGUiKSwNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjkpLCBsYWJlbCA9ICIwLjkiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDEuMCksIGxhYmVsID0gIjEuMCIsIG1ldGhvZCA9ICJyZXN0eWxlIikNCikNCg0KIyBDcmVhdGUgYW4gaW50ZXJhY3RpdmUgM0Qgc2NhdHRlciBwbG90IHdpdGggcGxvdGx5DQpwbG90X2x5KA0KICBkYXRhID0gZXhvcGxhbmV0c18zZCwNCiAgeCA9IH54LA0KICB5ID0gfnksDQogIHogPSB+eiwNCiAgY29sb3IgPSB+Y29sb3IsICAjIFVzZSB0aGUga2VwbGVyX2hpZ2hsaWdodCBjb2x1bW4gZm9yIGNvbG9yIG1hcHBpbmcNCiAgY29sb3JzID0gYygiT3RoZXIiID0gInJlZCIsICJLZXBsZXIiID0gImJsdWUiLCAiRnJlZSBGbG9hdGluZyIgPSAiZ3JlZW4iKSwNCiAgdGV4dCA9IH5ob3Zlcl90ZXh0LCAjIFNob3cgdGhlIG5hbWUgb2YgdGhlIGV4b3BsYW5ldCBvbiBob3Zlcg0KICB0eXBlID0gInNjYXR0ZXIzZCIsDQogIG1vZGUgPSAibWFya2VycyIsDQogIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDEsIG9wYWNpdHkgPSAwLjcpLCAjIERlZmF1bHQgb3BhY2l0eQ0KICBzaG93bGVnZW5kID0gVFJVRQ0KKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIjNEIFNreSBNYXAgb2YgRXhvcGxhbmV0cyAoS2VwbGVyIEhpZ2hsaWdodGVkKSIsDQogICAgc2NlbmUgPSBsaXN0KA0KICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIlgiKSwNCiAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJZIiksDQogICAgICB6YXhpcyA9IGxpc3QodGl0bGUgPSAiWiIpDQogICAgKSwNCiAgICBzbGlkZXJzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIGFjdGl2ZSA9IDEsICAjIFNldCB0aGUgZGVmYXVsdCBvcGFjaXR5IHZhbHVlIHRvIDEuMCAoZnVsbHkgb3BhcXVlKQ0KICAgICAgICBjdXJyZW50dmFsdWUgPSBsaXN0KA0KICAgICAgICAgIHByZWZpeCA9ICJPcGFjaXR5OiAiLA0KICAgICAgICAgIGZvbnQgPSBsaXN0KHNpemUgPSAxNSkNCiAgICAgICAgKSwNCiAgICAgICAgcGFkID0gbGlzdCh0ID0gNjApLA0KICAgICAgICBzdGVwcyA9IHN0ZXBzICAjIFVzZSB0aGUgc3RlcHMgZGVmaW5lZCBlYXJsaWVyIGZvciB0aGUgb3BhY2l0eSBzbGlkZXINCiAgICAgICkNCiAgICApDQogICkNCg0KYGBgDQoNCmBgYHtyfQ0KDQojIEFzc3VtaW5nIHlvdXIgZGF0YSBpcyBsb2FkZWQgYXMgJ2V4b3BsYW5ldHMnDQojIENvbnZlcnQgUkEgdG8gZGVncmVlcyAoaWYgaXQncyBpbiBob3VyczptaW51dGVzOnNlY29uZHMgZm9ybWF0KQ0KIyBJZiBSQSBpcyBhbHJlYWR5IGluIGRlZ3JlZXMsIHNraXAgdGhpcyBzdGVwDQpleG9wbGFuZXRzICU+JQ0KICBtdXRhdGUoDQogICAgcmFfZGVnID0gcmEsICAjIENvbnZlcnQgUkEgZnJvbSBob3VycyB0byBkZWdyZWVzIChpZiBuZWVkZWQpDQogICAgIyBDb252ZXJ0IHRvIHBvbGFyIGNvb3JkaW5hdGVzIGZvciBwbG90dGluZw0KICAgICMgUkEgaXMgbWFwcGVkIHRvIHRoZXRhICgwLTM2MCBkZWdyZWVzKQ0KICAgIHRoZXRhID0gcmFfZGVnDQogICkgJT4lIA0KZ2dwbG90KGFlcyh4ID0gdGhldGEsIHkgPSBzdGFyX2Rpc3RhbmNlLCBjb2xvciA9IG1hc3MpKSArDQogICMgVXNlIGNvb3JkX3BvbGFyIGZvciBjaXJjdWxhciBwbG90DQogIGNvb3JkX3BvbGFyKHN0YXJ0ID0gMCwgZGlyZWN0aW9uID0gLTEpICsgIyBTdGFydCBhdCAwIGRlZ3JlZXMsIGNsb2Nrd2lzZSBkaXJlY3Rpb24NCiAgIyBBZGQgY29uY2VudHJpYyBjaXJjbGVzIGZvciBkaXN0YW5jZSByZWZlcmVuY2UNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gYygxMCwgMTAwLCAxMDAwLCAxMDAwMCksIA0KICAgICAgICAgICAgIGNvbG9yID0gImdyYXkiLCBsaW5ldHlwZSA9ICJzb2xpZCIsIHNpemUgPSAwLjMsIGFscGhhID0gMC43KSArDQogICMgQWRkIHJhZGlhbCBsaW5lcyBmb3IgYW5nbGUgcmVmZXJlbmNlDQogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IHNlcSgwLCAzMzAsIGJ5ID0gMzApLCANCiAgICAgICAgICAgICBjb2xvciA9ICJncmF5IiwgbGluZXR5cGUgPSAic29saWQiLCBzaXplID0gMC4zLCBhbHBoYSA9IDAuNykgKw0KICAjIFBsb3QgdGhlIGV4b3BsYW5ldHMNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuOCwgc2l6ZSA9IDEpICsNCiAgIyBVc2UgbG9nIHNjYWxlIGZvciBkaXN0YW5jZQ0KICBzY2FsZV95X2xvZzEwKA0KICAgIGJyZWFrcyA9IGMoMTAsIDEwMCwgMTAwMCwgMTAwMDApLA0KICAgIGxhYmVscyA9IGMoIjEwIHBjIiwgIjEwMCBwYyIsICIxMDAwIHBjIiwgIjEwMDAwIHBjIiksDQogICAgbGltaXRzID0gYygxLCAxNTAwMCkNCiAgKSArDQogICMgVXNlIGxvZyBzY2FsZSBmb3IgbWFzcyBjb2xvcnMNCiAgc2NhbGVfY29sb3JfZ3JhZGllbnRuKA0KICAgIGNvbG9ycyA9IGMoIiMxRTkwRkYiLCAiIzMyQ0QzMiIsICIjRkZGRjAwIiwgIiNGRkE1MDAiLCAiI0ZGNDUwMCIsICIjRkYwMDAwIiksDQogICAgdHJhbnMgPSAibG9nMTAiLA0KICAgIGJyZWFrcyA9IGMoMC4wMDAxLCAwLjAwMSwgMC4wMSwgMC4xLCAxLCAxMCksDQogICAgbGFiZWxzID0gYygiMTDigbvigbQiLCAiMTDigbvCsyIsICIxMOKBu8KyIiwgIjEw4oG7wrkiLCAiMTDigbAiLCAiMTDCuSIpLA0KICAgIG5hbWUgPSAiUGxhbmV0YXJ5IE1hc3MgKE1KdXApIg0KICApICsNCiAgIyBSZW1vdmUgZ3JpZCBhbmQgYXhpcyBlbGVtZW50cw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZSgNCiAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLA0KICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF9ibGFuaygpLA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF9ibGFuaygpLA0KICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIsDQogICAgbGVnZW5kLmJveCA9ICJob3Jpem9udGFsIiwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KQ0KICApICsNCiAgZ2d0aXRsZSgiRXhvcGxhbmV0IERpc3RyaWJ1dGlvbiIpDQpgYGANCg0KDQpgYGB7cn0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBDcmVhdGUgYSBuZXcgY29sdW1uIHRvIGRpc3Rpbmd1aXNoIEtlcGxlciBleG9wbGFuZXRzDQpleG9wbGFuZXRzXzNkIDwtIGV4b3BsYW5ldHMgJT4lDQogIG11dGF0ZSgNCiAgICByYV9yYWQgPSByYSAqIHBpIC8gMTgwLCAgICMgQ29udmVydCBSQSBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucw0KICAgIGRlY19yYWQgPSBkZWMgKiBwaSAvIDE4MCwgIyBDb252ZXJ0IERlYyBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucw0KICAgIHggPSBjb3MoZGVjX3JhZCkgKiBjb3MocmFfcmFkKSwgIyBDb252ZXJ0IHRvIENhcnRlc2lhbiBjb29yZGluYXRlcw0KICAgIHkgPSBjb3MoZGVjX3JhZCkgKiBzaW4ocmFfcmFkKSwNCiAgICB6ID0gc2luKGRlY19yYWQpLA0KICAgIGNvbG9yID0gY2FzZV93aGVuKCAgIyBDcmVhdGUgYSBjb2x1bW4gZm9yIHJlZCB3aGVuIGtlcGxlciwgYmx1ZSBvdGhlcndpc2UNCiAgICAgIHN0cl9kZXRlY3QocGFzdGUobmFtZSwgYWx0ZXJuYXRlX25hbWVzKSwgcmVnZXgoImtlcGxlcnxrb2kiLCBpZ25vcmVfY2FzZSA9IFRSVUUpKSB+ICJLZXBsZXIiLA0KICAgICAgIyBpZiBpdCdzIGZyZWUgZmxvYXRpbmcgKHN0YXJfbmFtZSBpcyBOQSkNCiAgICAgIHN0YXJfbmFtZSAlPiUgaXMubmEoKSB+ICJGcmVlIEZsb2F0aW5nIiwNCiAgICAgIFRSVUUgfiAiT3RoZXIiDQogICAgKSwNCiAgICBob3Zlcl90ZXh0ID0gcGFzdGUoIk5hbWU6ICIsIG5hbWUpLCAjIENyZWF0ZSBjdXN0b20gaG92ZXIgdGV4dCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBleG9wbGFuZXQNCiAgICBzY2FsZWRfeCA9IHggKiAoMSAvIHN0YXJfZGlzdGFuY2UpLCAgIyBBZGp1c3QgeCBjb29yZGluYXRlIGJ5IHN0YXIgZGlzdGFuY2UgKGNsb3NlciA9IGNsb3NlciB0byBjZW50ZXIpDQogICAgc2NhbGVkX3kgPSB5ICogKDEgLyBzdGFyX2Rpc3RhbmNlKSwgICMgQWRqdXN0IHkgY29vcmRpbmF0ZSBzaW1pbGFybHkNCiAgICBzY2FsZWRfeiA9IHogKiAoMSAvIHN0YXJfZGlzdGFuY2UpICAgIyBBZGp1c3QgeiBjb29yZGluYXRlIHNpbWlsYXJseQ0KICApDQoNCiMgRGVmaW5lIHN0ZXBzIGZvciBvcGFjaXR5IHNsaWRlcg0Kc3RlcHMgPC0gbGlzdCgNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjApLCBsYWJlbCA9ICIwLjAiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDAuMSksIGxhYmVsID0gIjAuMSIsIG1ldGhvZCA9ICJyZXN0eWxlIiksDQogIGxpc3QoYXJncyA9IGxpc3QoIm1hcmtlci5vcGFjaXR5IiwgMC4yKSwgbGFiZWwgPSAiMC4yIiwgbWV0aG9kID0gInJlc3R5bGUiKSwNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjMpLCBsYWJlbCA9ICIwLjMiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDAuNCksIGxhYmVsID0gIjAuNCIsIG1ldGhvZCA9ICJyZXN0eWxlIiksDQogIGxpc3QoYXJncyA9IGxpc3QoIm1hcmtlci5vcGFjaXR5IiwgMC41KSwgbGFiZWwgPSAiMC41IiwgbWV0aG9kID0gInJlc3R5bGUiKSwNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjYpLCBsYWJlbCA9ICIwLjYiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDAuNyksIGxhYmVsID0gIjAuNyIsIG1ldGhvZCA9ICJyZXN0eWxlIiksDQogIGxpc3QoYXJncyA9IGxpc3QoIm1hcmtlci5vcGFjaXR5IiwgMC44KSwgbGFiZWwgPSAiMC44IiwgbWV0aG9kID0gInJlc3R5bGUiKSwNCiAgbGlzdChhcmdzID0gbGlzdCgibWFya2VyLm9wYWNpdHkiLCAwLjkpLCBsYWJlbCA9ICIwLjkiLCBtZXRob2QgPSAicmVzdHlsZSIpLA0KICBsaXN0KGFyZ3MgPSBsaXN0KCJtYXJrZXIub3BhY2l0eSIsIDEuMCksIGxhYmVsID0gIjEuMCIsIG1ldGhvZCA9ICJyZXN0eWxlIikNCikNCg0KIyBDcmVhdGUgYW4gaW50ZXJhY3RpdmUgM0Qgc2NhdHRlciBwbG90IHdpdGggcGxvdGx5DQpmaWcgPC0gcGxvdF9seSgNCiAgZGF0YSA9IGV4b3BsYW5ldHNfM2QsDQogIHggPSB+c2NhbGVkX3gsDQogIHkgPSB+c2NhbGVkX3ksDQogIHogPSB+c2NhbGVkX3osDQogIGNvbG9yID0gfmNvbG9yLCAgIyBVc2UgdGhlIGtlcGxlcl9oaWdobGlnaHQgY29sdW1uIGZvciBjb2xvciBtYXBwaW5nDQogIGNvbG9ycyA9IGMoIk90aGVyIiA9ICJyZWQiLCAiS2VwbGVyIiA9ICJibHVlIiwgIkZyZWUgRmxvYXRpbmciID0gImdyZWVuIiksDQogIHRleHQgPSB+aG92ZXJfdGV4dCwgIyBTaG93IHRoZSBuYW1lIG9mIHRoZSBleG9wbGFuZXQgb24gaG92ZXINCiAgdHlwZSA9ICJzY2F0dGVyM2QiLA0KICBtb2RlID0gIm1hcmtlcnMiLA0KICBtYXJrZXIgPSBsaXN0KHNpemUgPSAyLCBvcGFjaXR5ID0gMC43KSwgIyBEZWZhdWx0IG9wYWNpdHkNCiAgc2hvd2xlZ2VuZCA9IFRSVUUNCikNCg0KIyBBZGQgbGF5b3V0IHdpdGggYSBzbGlkZXIgZm9yIG9wYWNpdHkNCmZpZyA8LSBmaWcgJT4lIGxheW91dCgNCiAgdGl0bGUgPSAiM0QgU2t5IE1hcCBvZiBFeG9wbGFuZXRzIChLZXBsZXIgSGlnaGxpZ2h0ZWQpIiwNCiAgc2NlbmUgPSBsaXN0KA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJYIiksDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlkiKSwNCiAgICB6YXhpcyA9IGxpc3QodGl0bGUgPSAiWiIpDQogICksDQogIHNsaWRlcnMgPSBsaXN0KA0KICAgIGxpc3QoDQogICAgICBhY3RpdmUgPSAxLCAgIyBTZXQgdGhlIGRlZmF1bHQgb3BhY2l0eSB2YWx1ZSB0byAxLjAgKGZ1bGx5IG9wYXF1ZSkNCiAgICAgIGN1cnJlbnR2YWx1ZSA9IGxpc3QoDQogICAgICAgIHByZWZpeCA9ICJPcGFjaXR5OiAiLA0KICAgICAgICBmb250ID0gbGlzdChzaXplID0gMTUpDQogICAgICApLA0KICAgICAgcGFkID0gbGlzdCh0ID0gNjApLA0KICAgICAgc3RlcHMgPSBzdGVwcyAgIyBVc2UgdGhlIHN0ZXBzIGRlZmluZWQgZWFybGllciBmb3IgdGhlIG9wYWNpdHkgc2xpZGVyDQogICAgKQ0KICApDQopDQoNCmZpZw0KDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpleG9wbGFuZXRzICU+JSBuYW1lcygpDQpgYGANCg0KYGBge3J9DQojIGNoZWNrIGhvdyBtYW55IGFyZSBtaXNzaW5nDQpleG9wbGFuZXRzICU+JSANCiAgc2VsZWN0KHJhLCBkZWMsIGFuZ3VsYXJfZGlzdGFuY2UpICU+JSANCiAgbXV0YXRlKHJhID0gcmEgJT4lIGlzLm5hKCksIGRlYyA9IGRlYyAlPiUgaXMubmEoKSwgYW5ndWxhcl9kaXN0YW5jZSA9IGFuZ3VsYXJfZGlzdGFuY2UgJT4lIGlzLm5hKCkpICU+JQ0KICBzdW1tYXJpc2VfYWxsKG1lYW4pICU+JQ0KICBnYXRoZXIoa2V5PSJjb2x1bW4iLCB2YWx1ZT0icGVyY2VudGFnZSIpDQpgYGANCg0KDQpgYGB7cn0NCiMgY2hlY2sgd2hpY2ggb25lcyBkb250IGhhdmUgcmENCmV4b3BsYW5ldHMgJT4lIA0KICBmaWx0ZXIocmEgJT4lIGlzLm5hKCkpDQpgYGANCg0KYGBge3J9DQojIGNoZWNrIG91dCBhbHRlcm5hdGUgbmFtZXMNCmV4b3BsYW5ldHMgJT4lIA0KICBzZWxlY3QobmFtZSwgYWx0ZXJuYXRlX25hbWVzKSAlPiUgDQogIGZpbHRlcihhbHRlcm5hdGVfbmFtZXMgJT4lIHN0cl9sZW5ndGgoKSA+IDApDQoNCmBgYA0KDQpgYGB7cn0NCmV4b3BsYW5ldHMgJT4lIA0KICB0YWJ5bChwdWJsaWNhdGlvbikNCmBgYA0KDQoNCmBgYHtyfQ0KIyByZW1vdmUgYW55IGNvbHVtbiB3aXRoIGVycm9yIGluIHRoZSBuYW1lDQpleG9wbGFuZXRzX3IgPC0gZXhvcGxhbmV0cyAlPiUgDQogIHNlbGVjdCgtY29udGFpbnMoImVycm9yIikpICU+JSANCiAgc2VsZWN0KC1wbGFuZXRfc3RhdHVzLCAtcHVibGljYXRpb24pICU+JSAjIHVzZWxlc3MNCiAgc2VsZWN0KC1ob3RfcG9pbnRfbG9uLCApICMgdG9vIG1hbnkgbWlzc2luZ3MNCmV4b3BsYW5ldHNfciAlPiUgbmFtZXMNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTIwLCBmaWcuaGVpZ2h0PTEwfQ0KbGlicmFyeSh2aXNkYXQpDQp2aXNfZGF0KGV4b3BsYW5ldHNfcikNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTIwLCBmaWcuaGVpZ2h0PTEwfQ0KdmlzX21pc3MoZXhvcGxhbmV0c19yLCBzb3J0X21pc3MgPSBULCBjbHVzdGVyID0gVCkNCmBgYA0KDQoNCiMgZGV0ZWN0aW9uIHR5cGUNCmBgYHtyfQ0KZXhvcGxhbmV0cyAlPiUgDQogIHRhYnlsKCJkZXRlY3Rpb25fdHlwZSIpICU+JSANCiAgYXJyYW5nZSgtbikNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZmFzdER1bW1pZXMpDQpleG9wbGFuZXRzX3JkIDwtIGV4b3BsYW5ldHNfciAlPiUgDQogIGR1bW15X2NvbHMoc2VsZWN0X2NvbHVtbnMgPSAiZGV0ZWN0aW9uX3R5cGUiLCBzcGxpdCA9ICIsICIpDQpleG9wbGFuZXRzX3JkICU+JSBzZWxlY3Qoc3RhcnRzX3dpdGgoImRldGVjdGlvbl90eXBlIikpICU+JSANCiAgdW5pcXVlDQpgYGANCg0KDQpgYGB7cn0NCmV4b3BsYW5ldHNfcmQgJT4lIA0KICBzZWxlY3Qoc3RhcnRzX3dpdGgoImRldGVjdGlvbl90eXBlIikpICU+JSANCiAgZ2F0aGVyKGtleT0iZGV0ZWN0aW9uX3R5cGUiLCB2YWx1ZT0idmFsdWUiKSAlPiUgDQogIGZpbHRlcih2YWx1ZSA9PSAxKSAlPiUgDQogIGdyb3VwX2J5KGRldGVjdGlvbl90eXBlKSAlPiUgDQogIHN1bW1hcmlzZShuID0gbigpLCBwZXJjZW50YWdlID0gbigpKjEwMCAvIG5yb3coZXhvcGxhbmV0c19yZCkpICU+JSANCiAgYXJyYW5nZSgtbikNCmBgYA0KDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9MjB9DQpsaWJyYXJ5KG5hbmlhcikNCmV4b3BsYW5ldHNfcmQgJT4lDQogIGdyb3VwX2J5KGBkZXRlY3Rpb25fdHlwZV9QcmltYXJ5IFRyYW5zaXRgKSAlPiUgDQogIG1pc3NfdmFyX3N1bW1hcnkoKSAlPiUgDQogIGFycmFuZ2UodmFyaWFibGUpICU+JSANCiAgZmlsdGVyKHZhcmlhYmxlICU+JSBzdHJfZGV0ZWN0KCJkZXRlY3Rpb25fdHlwZSIsIG5lZ2F0ZSA9IFQpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IHZhcmlhYmxlLCB5ID0gcGN0X21pc3MsIGZpbGwgPSBgZGV0ZWN0aW9uX3R5cGVfUHJpbWFyeSBUcmFuc2l0YCkpICsNCiAgZ2VvbV9jb2wocG9zaXRpb249ImRvZGdlIikgKw0KICBjb29yZF9mbGlwKCkgDQpgYGANCg0KDQpgYGB7cn0NCmlmIChGKXsNCmxpYnJhcnkobWlzdHkpDQpleG9wbGFuZXRzX3JkICU+JSANCiAgc2VsZWN0KHR6ZXJvX3ZyLCB0emVyb190cl9zZWMsIHR6ZXJvX3RyKSAlPiUgDQogIG5hLnRlc3QoZGF0YSA9IGV4b3BsYW5ldHNfcmQpDQp9ICMgZGlkbnQgd29yayBmb3Igc29tZSByZWFzb24NCmBgYA0KDQoNCmBgYHtyfQ0KbGlicmFyeShzaGlueSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkobmFuaWFyKSAgIyBBc3N1bWluZyBtaXNzX3Zhcl9zdW1tYXJ5KCkgaXMgZnJvbSBuYW5pYXINCg0KIyBTYW1wbGUgVUkNCnVpIDwtIGZsdWlkUGFnZSgNCiAgdGl0bGVQYW5lbCgiTWlzc2luZyBEYXRhIGJ5IERldGVjdGlvbiBUeXBlIiksDQogIA0KICBzaWRlYmFyTGF5b3V0KA0KICAgIHNpZGViYXJQYW5lbCgNCiAgICAgIHNlbGVjdElucHV0KCJncm91cF92YXIiLCAiU2VsZWN0IERldGVjdGlvbiBUeXBlOiIsIA0KICAgICAgICAgICAgICAgICAgY2hvaWNlcyA9IG5hbWVzKGV4b3BsYW5ldHNfcmQpW2dyZXBsKCJeZGV0ZWN0aW9uX3R5cGVfIiwgbmFtZXMoZXhvcGxhbmV0c19yZCkpXSkNCiAgICApLA0KICAgIA0KICAgIG1haW5QYW5lbCgNCiAgICAgIHBsb3RseU91dHB1dCgibWlzc2luZ19wbG90IiwgaGVpZ2h0ID0gIjcwMHB4IikgICMgSW5jcmVhc2VkIGhlaWdodA0KICAgICkNCiAgKQ0KKQ0KDQojIFNlcnZlciBmdW5jdGlvbg0Kc2VydmVyIDwtIGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQpIHsNCiAgb3V0cHV0JG1pc3NpbmdfcGxvdCA8LSByZW5kZXJQbG90bHkoew0KICAgIGV4b3BsYW5ldHNfcmQgJT4lDQogICAgICBncm91cF9ieSguZGF0YVtbaW5wdXQkZ3JvdXBfdmFyXV0pICU+JQ0KICAgICAgbWlzc192YXJfc3VtbWFyeSgpICU+JQ0KICAgICAgYXJyYW5nZSh2YXJpYWJsZSkgJT4lDQogICAgICBmaWx0ZXIoIXN0cl9kZXRlY3QodmFyaWFibGUsICJkZXRlY3Rpb25fdHlwZSIpKSAlPiUNCiAgICAgIHBsb3RfbHkoeSA9IH52YXJpYWJsZSwgeCA9IH5wY3RfbWlzcywgY29sb3IgPSB+LmRhdGFbW2lucHV0JGdyb3VwX3Zhcl1dLCB0eXBlID0gImJhciIpICU+JQ0KICAgICAgbGF5b3V0KGJhcm1vZGUgPSAiZ3JvdXAiLCBoZWlnaHQgPSA3MDApICAjIEluY3JlYXNlZCBwbG90IGhlaWdodA0KICB9KQ0KfQ0KIyBSdW4gdGhlIGFwcA0KaWYgKEYpIHsNCiAgc2hpbnlBcHAodWkgPSB1aSwgc2VydmVyID0gc2VydmVyKQ0KfQ0KYGBgDQoNCg0KIyMgS2VwbGVyDQoNCmBgYHtyfQ0KIyBmaWx0ZXIgYnkgdGhlIGtlcGxlcg0KZXhvcGxhbmV0cyAlPiUgDQogIGZpbHRlcihwYXN0ZShuYW1lLCBhbHRlcm5hdGVfbmFtZXMpICU+JSBzdHJfbGlrZSgiJUtlcGxlciUiKSkgJT4lIA0KICB0YWJ5bCgiZGV0ZWN0aW9uX3R5cGUiKQ0KYGBgDQoNCmBgYHtyfQ0KIyBjaGVjayBvdGhlcg0KZXhvcGxhbmV0cyAlPiUgDQogIGZpbHRlcihkZXRlY3Rpb25fdHlwZSA9PSAiT3RoZXIiKQ0KYGBgDQoNCmBgYHtyfQ0KZXhvcGxhbmV0c19yZCAlPiUgDQogIHNlbGVjdChuYW1lLCBzdGFyX2Rpc3RhbmNlLCBzdGFyX25hbWUpDQpgYGANCg0KDQpgYGB7cn0NCmNvbmZsaWN0c19wcmVmZXIobHVicmlkYXRlOjp5ZGF5KQ0KY29uZmxpY3RzX3ByZWZlcihsdWJyaWRhdGU6OnllYXIpDQp5ZWFyX3dpdGhfcGVyY2VudGFnZSA8LSBmdW5jdGlvbihkYXRlKSB7DQogIHBlcmNlbnRhZ2Vfb2ZfeWVhciA8LSB5ZGF5KGRhdGUpIC8gaWZlbHNlKGxlYXBfeWVhcihkYXRlKSwgMzY2LCAzNjUpDQogIHllYXIoZGF0ZSkgKyBwZXJjZW50YWdlX29mX3llYXINCn0NCg0KZXhvcGxhbmV0c19yZCAlPiUgDQogIG11dGF0ZSh1cGRhdGVkID0gdXBkYXRlZCAlPiUgeWVhcl93aXRoX3BlcmNlbnRhZ2UpICU+JSANCiAgbXV0YXRlKGRpZmZfZGlzY191cGRhdGVkID0gdXBkYXRlZCAtIGRpc2NvdmVyZWQpIC0+IGV4b3BsYW5ldHNfcmRkDQpleG9wbGFuZXRzX3JkZCAlPiUgDQogIHNlbGVjdChkaXNjb3ZlcmVkLCB1cGRhdGVkLCBkaWZmX2Rpc2NfdXBkYXRlZCkNCmBgYA0KDQpgYGB7cn0NCmV4b3BsYW5ldHNfcmRkayA8LSBleG9wbGFuZXRzX3JkZCAlPiUgDQogIG11dGF0ZShpc19rZXBsZXIgPSBwYXN0ZShuYW1lLCBhbHRlcm5hdGVfbmFtZXMpICU+JSBzdHJfZGV0ZWN0KCJrZXBsZXIiICU+JSByZWdleChpZ25vcmVfY2FzZSA9IFQpKSkNCmV4b3BsYW5ldHNfcmRkayAlPiUNCiAgc2VsZWN0KG5hbWUsIGlzX2tlcGxlcikgJT4lIA0KICBhcnJhbmdlKC1pc19rZXBsZXIpDQpgYGANCg0KDQoNCmBgYHtyfQ0KZXhvcGxhbmV0cyAlPiUNCiAgZmlsdGVyKHB1YmxpY2F0aW9uICU+JSBpc19uYSkNCmBgYA0KDQoNCiMgTW9kZWxpbmcNCg0KYGBge3J9DQojIHRyYW5zZm9ybSBpbnRvIGlzIHNoYWRvdyBtYXRyaXgNCmxpYnJhcnkobmFuaWFyKQ0KZXhvcGxhbmV0c19yZGRrICU+JSANCiAgc2VsZWN0KC1uYW1lLCAtZGlzY292ZXJlZCwgLXVwZGF0ZWQsIC1kaWZmX2Rpc2NfdXBkYXRlZCwgLWlzX2tlcGxlciwgLXN0YXJfZGlzdGFuY2UsIC1zdGFydHNfd2l0aCgiZGV0ZWN0aW9uX3R5cGUiKSkgJT4lDQogIGphbml0b3I6OnJlbW92ZV9jb25zdGFudCgpICU+JQ0KICBhc19zaGFkb3coKSAtPiBzaGFkb3dfbWF0cml4DQojIGFkZCBjb2x1bW5zIHRvIGV4b3BsYW5ldHNfcmQNCnNoYWRvd19leG9wbGFuZXRzIDwtIGV4b3BsYW5ldHNfcmRkayAlPiUgDQogIGJpbmRfY29scyhzaGFkb3dfbWF0cml4KSAlPiUgDQogICMgc2VsZWN0IGV2ZXJ5b25lIHRoYXQgZW5kcyB3aXRoIF9OQQ0KICBzZWxlY3QobmFtZSwgc3RhcnRzX3dpdGgoImRldGVjdGlvbl90eXBlXyIpLCBkaXNjb3ZlcmVkLCB1cGRhdGVkLCBkaWZmX2Rpc2NfdXBkYXRlZCwgaXNfa2VwbGVyLCBzdGFyX2Rpc3RhbmNlLCByYSwgZGVjLCBlbmRzX3dpdGgoIl9OQSIpKSAlPiUgDQogICMgY2hhbmdlIGRldGVjdGlvbl90eXBlIHRvIGZhY3Rvcg0KICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiZGV0ZWN0aW9uX3R5cGVfIikpLCBhcy5mYWN0b3IpICU+JSANCiAgamFuaXRvcjo6Y2xlYW5fbmFtZXMoKQ0KIyBUT0RPIHJlZHVjZSBkaW1lbnNpb25hbGl0eSBvbiB0aGUgX05BIA0Kc2hhZG93X2V4b3BsYW5ldHMNCmBgYA0KDQojIGNsdXN0ZXJpbmcNClRPRE8NCg0KIyBtb2RlbA0KDQpgYGB7cn0NCnNoYWRvd19leG9wbGFuZXRzICU+JSBnbGltcHNlDQpgYGANCg0KDQpgYGB7cn0NCmxpYnJhcnkocnBhcnQpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShwdXJycikNCg0Kc2V0LnNlZWQoMTIzKQ0KDQojIERlZmluZSB0YXJnZXQgYW5kIHByZWRpY3RvciBjb2x1bW5zDQp0YXJnZXRfY29scyA8LSBuYW1lcyhzaGFkb3dfZXhvcGxhbmV0cykgJT4lIA0KICBrZWVwKH4gc3RhcnRzV2l0aCgueCwgImRldGVjdGlvbl90eXBlXyIpKQ0KDQpwcmVkaWN0b3JfY29scyA8LSBuYW1lcyhzaGFkb3dfZXhvcGxhbmV0cykgJT4lIA0KICBzZXRkaWZmKGMoIm5hbWUiLCB0YXJnZXRfY29scykpDQoNCiMgVHJhaW4gZGVjaXNpb24gdHJlZXMgZm9yIGVhY2ggdGFyZ2V0IGxhYmVsDQptb2RlbHMgPC0gdGFyZ2V0X2NvbHMgJT4lDQogIHNldF9uYW1lcygpICU+JQ0KICBtYXAofiBycGFydChhcy5mb3JtdWxhKHBhc3RlKC54LCAifiIsIHBhc3RlKHByZWRpY3Rvcl9jb2xzLCBjb2xsYXBzZSA9ICIgKyAiKSkpLA0KICAgICAgICAgICAgICBkYXRhID0gc2hhZG93X2V4b3BsYW5ldHMsIG1ldGhvZCA9ICJjbGFzcyIpKQ0KDQojIE1ha2UgcHJlZGljdGlvbnMgYW5kIGFkZCB0aGVtIHRvIHRoZSBvcmlnaW5hbCBkYXRhc2V0DQpzaGFkb3dfZXhvcGxhbmV0c193aXRoX3ByZWRzIDwtIHNoYWRvd19leG9wbGFuZXRzICU+JQ0KICBiaW5kX2NvbHMobW9kZWxzICU+JQ0KICAgIG1hcF9kZmMofiBwcmVkaWN0KC54LCBzaGFkb3dfZXhvcGxhbmV0cywgdHlwZSA9ICJjbGFzcyIpKSAlPiUNCiAgICByZW5hbWVfd2l0aCh+IHBhc3RlMCgicHJlZF8iLCB0YXJnZXRfY29scykpICAjIFByZWZpeCBwcmVkaWN0aW9ucyBmb3IgY2xhcml0eQ0KICApDQoNCnByZWRpY3Rpb25zIDwtIHNoYWRvd19leG9wbGFuZXRzX3dpdGhfcHJlZHMgJT4lDQogIG11dGF0ZSgNCiAgICBhY3R1YWxfY29tYmluZWQgPSBhcHBseShzZWxlY3QoLiwgYWxsX29mKHRhcmdldF9jb2xzKSksIDEsIHBhc3RlLCBjb2xsYXBzZSA9ICJfIiksDQogICAgcHJlZGljdGVkX2NvbWJpbmVkID0gYXBwbHkoc2VsZWN0KC4sIHN0YXJ0c193aXRoKCJwcmVkXyIpKSwgMSwgcGFzdGUsIGNvbGxhcHNlID0gIl8iKQ0KICApICU+JSBzZWxlY3QoYWN0dWFsX2NvbWJpbmVkLCBwcmVkaWN0ZWRfY29tYmluZWQsIHN0YXJ0c193aXRoKCJwcmVkXyIpLCBzdGFydHNfd2l0aCgiZGV0ZWN0aW9uX3R5cGVfIikpDQpwcmVkaWN0aW9ucw0KYGBgDQoNCmBgYHtyfQ0KbXVsdGlfbGFiZWxfY29uZnVzaW9uX21hdHJpeCA8LSBmdW5jdGlvbih5X3RydWUsIHlfcHJlZCkgew0KICByZXN1bHQgPC0gbGlzdCgpDQogIA0KICBmb3IgKGNvbCBpbiBuYW1lcyh5X3RydWUpKSB7DQogICAgY29uZnVzaW9uX21hdHJpeCA8LSB0YWJsZSh5X3RydWVbW2NvbF1dLCB5X3ByZWRbW3Bhc3RlMCgicHJlZF8iLCBjb2wpXV0pDQogICAgcmVzdWx0W1tjb2xdXSA8LSBjb25mdXNpb25fbWF0cml4DQogIH0NCiAgDQogIHJldHVybihyZXN1bHQpDQp9DQptdWx0aV9sYWJlbF9jb25mdXNpb25fbWF0cml4KHNoYWRvd19leG9wbGFuZXRzX3dpdGhfcHJlZHMgJT4lIHNlbGVjdChzdGFydHNfd2l0aCgiZGV0ZWN0aW9uX3R5cGVfIikpLCBwcmVkaWN0aW9ucyAlPiUgc2VsZWN0KHN0YXJ0c193aXRoKCJwcmVkXyIpKSkNCmBgYA0KDQpgYGB7cn0NCiMgTG9hZCBuZWNlc3NhcnkgbGlicmFyeQ0KbGlicmFyeShycGFydC5wbG90KQ0KDQojIFBsb3QgdGhlIGRlY2lzaW9uIHRyZWVzIHdpdGggdGl0bGVzDQp0YXJnZXRfY29scyAlPiUNCiAgbWFwMihtb2RlbHMsIH4gew0KICAgIHJwYXJ0LnBsb3QoLnksIA0KICAgICAgICAgICAgICAgdHlwZSA9IDQsIA0KICAgICAgICAgICAgICAgZXh0cmEgPSAxMDEsIA0KICAgICAgICAgICAgICAgdW5kZXIgPSBUUlVFLCANCiAgICAgICAgICAgICAgIGZhbGxlbi5sZWF2ZXMgPSBUUlVFLA0KICAgICAgICAgICAgICAgbWFpbiA9IHBhc3RlKCJEZWNpc2lvbiBUcmVlIGZvciIsIC54KSkgICMgVGl0bGUgd2l0aCB0aGUgdGFyZ2V0IGxhYmVsDQogIH0pDQoNCmBgYA0KDQpgYGB7cn0NCiMgZ2V0IGFjY3VyYWN5DQphY2N1cmFjeSA8LSBmdW5jdGlvbih5X3RydWUsIHlfcHJlZCkgew0KICByZXN1bHQgPC0gbGlzdCgpDQogIA0KICBmb3IgKGNvbCBpbiBuYW1lcyh5X3RydWUpKSB7DQogICAgY29uZnVzaW9uX21hdHJpeCA8LSB0YWJsZSh5X3RydWVbW2NvbF1dLCB5X3ByZWRbW3Bhc3RlMCgicHJlZF8iLCBjb2wpXV0pDQogICAgcmVzdWx0W1tjb2xdXSA8LSBzdW0oZGlhZyhjb25mdXNpb25fbWF0cml4KSkgLyBzdW0oY29uZnVzaW9uX21hdHJpeCkNCiAgfQ0KICANCiAgcmV0dXJuKHJlc3VsdCkNCn0NCg0KYWNjdXJhY3koc2hhZG93X2V4b3BsYW5ldHNfd2l0aF9wcmVkcyAlPiUgc2VsZWN0KHN0YXJ0c193aXRoKCJkZXRlY3Rpb25fdHlwZV8iKSksIHByZWRpY3Rpb25zICU+JSBzZWxlY3Qoc3RhcnRzX3dpdGgoInByZWRfIikpKQ0KYGBgDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTIzKQ0KDQpzaGFkb3dfZXhvcGxhbmV0cyAlPiUgDQogIHNlbGVjdCgtbmFtZSwgLXN0YXJ0c193aXRoKCJkZXRlY3Rpb25fdHlwZSIpLCAtZW5kc193aXRoKCJfbmEiKSwgLWRpc2NvdmVyZWQsIC11cGRhdGVkLCAtZGlmZl9kaXNjX3VwZGF0ZWQsIC1pc19rZXBsZXIpICU+JSANCiAgYXNfc2hhZG93KCkgJT4lIA0KICBiaW5kX2NvbHMoc2hhZG93X2V4b3BsYW5ldHMpICU+JSANCiAgc2VsZWN0KC1kaXNjb3ZlcmVkLCAtdXBkYXRlZCwgLWRpZmZfZGlzY191cGRhdGVkLCAtaXNfa2VwbGVyLCAtc3Rhcl9kaXN0YW5jZSwgLXJhLCAtZGVjKSAlPiUNCiAgcmVsb2NhdGUobmFtZSwgc3RhcnRzX3dpdGgoImRldGVjdGlvbl90eXBlIikpIC0+IHNoYWRvd2VyX2V4b3BsYW5ldHMNCg0Kc2hhZG93ZXJfZXhvcGxhbmV0cyAlPiUgZ2xpbXBzZQ0KYGBgDQoNCg0KYGBge3J9DQojIERvIHRoZSBzYW1lIHRoaW5nIHdpdGggc2hhZG93ZXJfZXhvcGxhbmV0cw0KDQoNCiMgRGVmaW5lIHRhcmdldCBhbmQgcHJlZGljdG9yIGNvbHVtbnMNCnRhcmdldF9jb2xzIDwtIG5hbWVzKHNoYWRvd2VyX2V4b3BsYW5ldHMpICU+JSANCiAga2VlcCh+IHN0YXJ0c1dpdGgoLngsICJkZXRlY3Rpb25fdHlwZV8iKSkNCg0KcHJlZGljdG9yX2NvbHMgPC0gbmFtZXMoc2hhZG93ZXJfZXhvcGxhbmV0cykgJT4lDQogIHNldGRpZmYoYygibmFtZSIsIHRhcmdldF9jb2xzKSkNCg0KIyBUcmFpbiBkZWNpc2lvbiB0cmVlcyBmb3IgZWFjaCB0YXJnZXQgbGFiZWwNCm1vZGVscyA8LSB0YXJnZXRfY29scyAlPiUNCiAgc2V0X25hbWVzKCkgJT4lDQogIG1hcCh+IHJwYXJ0KGFzLmZvcm11bGEocGFzdGUoLngsICJ+IiwgcGFzdGUocHJlZGljdG9yX2NvbHMsIGNvbGxhcHNlID0gIiArICIpKSksDQogICAgICAgICAgICAgIGRhdGEgPSBzaGFkb3dlcl9leG9wbGFuZXRzLCBtZXRob2QgPSAiY2xhc3MiKSkNCg0KIyBNYWtlIHByZWRpY3Rpb25zIGFuZCBhZGQgdGhlbSB0byB0aGUgb3JpZ2luYWwgZGF0YXNldA0Kc2hhZG93ZXJfZXhvcGxhbmV0c193aXRoX3ByZWRzIDwtIHNoYWRvd2VyX2V4b3BsYW5ldHMgJT4lDQogIGJpbmRfY29scyhtb2RlbHMgJT4lDQogICAgbWFwX2RmYyh+IHByZWRpY3QoLngsIHNoYWRvd2VyX2V4b3BsYW5ldHMsIHR5cGUgPSAiY2xhc3MiKSkgJT4lDQogICAgcmVuYW1lX3dpdGgofiBwYXN0ZTAoInByZWRfIiwgdGFyZ2V0X2NvbHMpKSAgIyBQcmVmaXggcHJlZGljdGlvbnMgZm9yIGNsYXJpdHkNCiAgKQ0KDQpwcmVkaWN0aW9ucyA8LSBzaGFkb3dlcl9leG9wbGFuZXRzX3dpdGhfcHJlZHMgJT4lDQogIG11dGF0ZSgNCiAgICBhY3R1YWxfY29tYmluZWQgPSBhcHBseShzZWxlY3QoLiwgYWxsX29mKHRhcmdldF9jb2xzKSksIDEsIHBhc3RlLCBjb2xsYXBzZSA9ICJfIiksDQogICAgcHJlZGljdGVkX2NvbWJpbmVkID0gYXBwbHkoc2VsZWN0KC4sIHN0YXJ0c193aXRoKCJwcmVkXyIpKSwgMSwgcGFzdGUsIGNvbGxhcHNlID0gIl8iKQ0KICApICU+JSBzZWxlY3QoYWN0dWFsX2NvbWJpbmVkLCBwcmVkaWN0ZWRfY29tYmluZWQsIHN0YXJ0c193aXRoKCJwcmVkXyIpLCBzdGFydHNfd2l0aCgiZGV0ZWN0aW9uX3R5cGVfIikpDQpwcmVkaWN0aW9ucw0KYGBgDQoNCg0KYGBge3J9DQojIGFjY3VyYWN5DQphY2N1cmFjeShzaGFkb3dlcl9leG9wbGFuZXRzX3dpdGhfcHJlZHMgJT4lIHNlbGVjdChzdGFydHNfd2l0aCgiZGV0ZWN0aW9uX3R5cGVfIikpLCBwcmVkaWN0aW9ucyAlPiUgc2VsZWN0KHN0YXJ0c193aXRoKCJwcmVkXyIpKSkNCmBgYA0KDQpgYGB7cn0NCiMgcGxvdA0KdGFyZ2V0X2NvbHMgJT4lDQogIG1hcDIobW9kZWxzLCB+IHsNCiAgICBycGFydC5wbG90KC55LCANCiAgICAgICAgICAgICAgIHR5cGUgPSA0LCANCiAgICAgICAgICAgICAgIGV4dHJhID0gMTAxLCANCiAgICAgICAgICAgICAgIHVuZGVyID0gVFJVRSwgDQogICAgICAgICAgICAgICBmYWxsZW4ubGVhdmVzID0gVFJVRSwNCiAgICAgICAgICAgICAgIG1haW4gPSBwYXN0ZSgiRGVjaXNpb24gVHJlZSBmb3IiLCAueCkpICAjIFRpdGxlIHdpdGggdGhlIHRhcmdldCBsYWJlbA0KICB9KQ0KYGBgDQoNCg==